Commit e81147a3 authored by hu's avatar hu

调整K-LINE调用

parent 3763c3c0
...@@ -43,6 +43,9 @@ unsigned char DTCstatusCHGFFK_Line; ...@@ -43,6 +43,9 @@ unsigned char DTCstatusCHGFFK_Line;
unsigned char AccessMode2701KeyTimeFlag; unsigned char AccessMode2701KeyTimeFlag;
unsigned char AccessMode2701KeyTime; unsigned char AccessMode2701KeyTime;
unsigned long EOLSeedRandomNumber = 0x6879716169716872ul;
/* /*
********************************************************************* *********************************************************************
* function * function
...@@ -1124,9 +1127,10 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque ...@@ -1124,9 +1127,10 @@ unsigned char kwp_readDataAccessMode(unsigned char *TxData, unsigned char *Reque
if (0) if (0)
{ {
/*密钥随机数生成*/ /*密钥随机数生成*/
// SeedKey = (unsigned long)RealTimeClock.RollingCounter; EOLSeedRandomNumber = EOLSeedRandomNumber * 1024 + 520;
// SeedKey = SeedKey << 16; SeedKey = (unsigned long)EOLSeedRandomNumber;
// SeedKey |= (unsigned long)(~RealTimeClock.RollingCounter); SeedKey = SeedKey << 16;
SeedKey |= (unsigned long)(~EOLSeedRandomNumber);
Seed1 = (unsigned char)(SeedKey >> 24); Seed1 = (unsigned char)(SeedKey >> 24);
Seed2 = (unsigned char)(SeedKey >> 16); Seed2 = (unsigned char)(SeedKey >> 16);
......
...@@ -467,19 +467,19 @@ ...@@ -467,19 +467,19 @@
#endif #endif
static const uint32_t u32TimerBClockArray[12U] = static const uint32_t u32TimerBClockArray[12U] =
{ {
TIMERB_0_CK0, TIMERB_0_CK0,
TIMERB_0_CK1, TIMERB_0_CK1,
TIMERB_0_CK2, TIMERB_0_CK2,
TIMERB_0_CK3, TIMERB_0_CK3,
TIMERB_1_CK0, TIMERB_1_CK0,
TIMERB_1_CK1, TIMERB_1_CK1,
TIMERB_1_CK2, TIMERB_1_CK2,
TIMERB_1_CK3, TIMERB_1_CK3,
TIMERB_2_CK0, TIMERB_2_CK0,
TIMERB_2_CK1, TIMERB_2_CK1,
TIMERB_2_CK2, TIMERB_2_CK2,
TIMERB_2_CK3, TIMERB_2_CK3,
}; };
/*-------------------------------------------------------*/ /*-------------------------------------------------------*/
...@@ -564,7 +564,8 @@ void TimerB_PWM_Init(void) ...@@ -564,7 +564,8 @@ void TimerB_PWM_Init(void)
do do
{ {
u16TimeCount++; u16TimeCount++;
} while (((TAUB0TE) || (TAUB1TE) || (TAUB2TE)) && (u16TimeCount < TIMERB_TIMEROUT_MAX)); }
while (((TAUB0TE) || (TAUB1TE) || (TAUB2TE)) && (u16TimeCount < TIMERB_TIMEROUT_MAX));
if (u16TimeCount < TIMERB_TIMEROUT_MAX) if (u16TimeCount < TIMERB_TIMEROUT_MAX)
{ {
/*CLK0~3 =PCLK */ /*CLK0~3 =PCLK */
...@@ -576,30 +577,30 @@ void TimerB_PWM_Init(void) ...@@ -576,30 +577,30 @@ void TimerB_PWM_Init(void)
TimerB_BackLight_Demo_Init(); TimerB_BackLight_Demo_Init();
TimerB_VehFreOut_Init(); TimerB_VehFreOut_Init();
TimerB_EngFreOut_Init(); TimerB_EngFreOut_Init();
//TimerB_Input_Channel_Init(TIMERB_0_CH2, TIMERB_CLOCK_3, TIMERB_RISING); //车速输入捕获 //TimerB_Input_Channel_Init(TIMERB_0_CH2, TIMERB_CLOCK_3, TIMERB_RISING); //车速输入捕获
//TimerB_Input_Channel_Start(TIMERB_0_CH2); //TimerB_Input_Channel_Start(TIMERB_0_CH2);
} }
static void TimerB_PWM_Master_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock) static void TimerB_PWM_Master_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16ClockSelectRe = (0x801U | (enTimerBClock << 14U)); uint16_t u16ClockSelectRe = (0x801U | (enTimerBClock << 14U));
uint16_t u16TimerBbit = (1U << u8TimerBChannel); uint16_t u16TimerBbit = (1U << u8TimerBChannel);
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = 0U; uint32_t u32TimerBRegAddrChannel = 0U;
/*control*/ /*control*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel);
*((uint16_t *)u32TimerBRegAddrChannel) = u16ClockSelectRe; *((uint16_t *)u32TimerBRegAddrChannel) = u16ClockSelectRe;
/*TAUB0CMOR2 = u16ClockSelectRe;*/ /*TAUB0CMOR2 = u16ClockSelectRe;*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0XC0U + (4U * u8TimerBChannel); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0XC0U + (4U * u8TimerBChannel);
*((uint8_t *)u32TimerBRegAddrChannel) = 0U; *((uint8_t *)u32TimerBRegAddrChannel) = 0U;
/*TAUB0CMUR2 = 0U;*/ /*TAUB0CMUR2 = 0U;*/
/*output mode*/ /*output mode*/
/*Simultaneous rewrite */ /*Simultaneous rewrite */
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X260U; u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X260U;
...@@ -688,20 +689,20 @@ static void TimerB_PWM_Slave_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, T ...@@ -688,20 +689,20 @@ static void TimerB_PWM_Slave_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, T
} }
/* 返回初始化状态。1:成功。0:失败 /* 返回初始化状态。1:成功。0:失败
输出要设置的通道,通道选择的时钟源,通道有效时输出的极性*/ 输出要设置的通道,通道选择的时钟源,通道有效时输出的极性*/
uint8_t TimerB_PWM_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock, TIMERB_Polarity_en_t enTimerBPolarity) uint8_t TimerB_PWM_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock, TIMERB_Polarity_en_t enTimerBPolarity)
{ {
uint8_t u8TimerBResult = 0U; uint8_t u8TimerBResult = 0U;
if ((enTimerBChannel % 2U)) if ((enTimerBChannel % 2U))
{ {
u8TimerBResult = 1U; u8TimerBResult = 1U;
TimerB_PWM_Master_Channel_Init(enTimerBChannel - TIMERB_CHANNEL_INTERVAL, enTimerBClock); TimerB_PWM_Master_Channel_Init(enTimerBChannel - TIMERB_CHANNEL_INTERVAL, enTimerBClock);
TimerB_PWM_Slave_Channel_Init(enTimerBChannel, enTimerBClock, enTimerBPolarity); TimerB_PWM_Slave_Channel_Init(enTimerBChannel, enTimerBClock, enTimerBPolarity);
} }
return u8TimerBResult; return u8TimerBResult;
} }
/* 返回实际设置成功的频率,如果返回0表示错误。 /* 返回实际设置成功的频率,如果返回0表示错误。
...@@ -710,123 +711,123 @@ uint8_t TimerB_PWM_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Cloc ...@@ -710,123 +711,123 @@ uint8_t TimerB_PWM_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Cloc
uint32_t TimerB_PWM_Channel_Fre_Set(TIMERB_Channel_en_t enTimerBChannel, uint16_t u16Fre, uint16_t u16Duty) uint32_t TimerB_PWM_Channel_Fre_Set(TIMERB_Channel_en_t enTimerBChannel, uint16_t u16Fre, uint16_t u16Duty)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL; uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL;
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel); uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel);
uint8_t u8TimerBClockSel = (uint8_t)(((*((uint16_t *)u32TimerBRegAddrChannel))) >> 14U); uint8_t u8TimerBClockSel = (uint8_t)(((*((uint16_t *)u32TimerBRegAddrChannel))) >> 14U);
uint8_t u8TimerBClockIndex = u8TimerBIndex * 4U + u8TimerBClockSel; uint8_t u8TimerBClockIndex = u8TimerBIndex * 4U + u8TimerBClockSel;
uint32_t u32TimerBClockFre = u32TimerBClockArray[u8TimerBClockIndex]; uint32_t u32TimerBClockFre = u32TimerBClockArray[u8TimerBClockIndex];
uint32_t u32CalBuf = (u32TimerBClockFre / u16Fre); uint32_t u32CalBuf = (u32TimerBClockFre / u16Fre);
uint32_t u32CalFre = 0U; uint32_t u32CalFre = 0U;
uint32_t u32Duty = u16Duty; uint32_t u32Duty = u16Duty;
if (enTimerBChannel % 2U) if (enTimerBChannel % 2U)
{ {
u32CalFre = (u32TimerBClockFre / u32CalBuf); u32CalFre = (u32TimerBClockFre / u32CalBuf);
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * (u8TimerBChannel)); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * (u8TimerBChannel));
(*((uint16_t *)(u32TimerBRegAddrChannel - 4U * TIMERB_CHANNEL_INTERVAL))) = u32CalBuf - 1U; (*((uint16_t *)(u32TimerBRegAddrChannel - 4U * TIMERB_CHANNEL_INTERVAL))) = u32CalBuf - 1U;
/*TAUB0CDR2 = u32CalBuf - 1U; // fre*/ /*TAUB0CDR2 = u32CalBuf - 1U; // fre*/
(*((uint16_t *)u32TimerBRegAddrChannel)) = (u32Duty * u32CalBuf / 1000U); (*((uint16_t *)u32TimerBRegAddrChannel)) = (u32Duty * u32CalBuf / 1000U);
/*TAUB0CDR3 = (u32Duty * u32CalBuf / 100000U); // duty*/ /*TAUB0CDR3 = (u32Duty * u32CalBuf / 100000U); // duty*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X44U; u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X44U;
(*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit; (*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit;
/*TAUB0RDT = (u16TimerBbit);*/ /*TAUB0RDT = (u16TimerBbit);*/
} }
return u32CalFre; return u32CalFre;
} }
/*占空比精度千分之一*/ /*占空比精度千分之一*/
void TimerB_PWM_Channel_Duty_Set(TIMERB_Channel_en_t enTimerBChannel, uint16_t u16Duty) void TimerB_PWM_Channel_Duty_Set(TIMERB_Channel_en_t enTimerBChannel, uint16_t u16Duty)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL; uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL;
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)); uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL));
uint32_t u32CalBuf = (*((uint16_t *)u32TimerBRegAddrChannel)) + 1U; uint32_t u32CalBuf = (*((uint16_t *)u32TimerBRegAddrChannel)) + 1U;
/* uint32_t u32CalBuf = TAUB0CDR2 + 1U;*/ /* uint32_t u32CalBuf = TAUB0CDR2 + 1U;*/
uint32_t u32Duty = u16Duty; uint32_t u32Duty = u16Duty;
if (enTimerBChannel % 2U) if (enTimerBChannel % 2U)
{ {
(*((uint16_t *)(u32TimerBRegAddrChannel + 4U * TIMERB_CHANNEL_INTERVAL))) = (u32CalBuf * u32Duty / 1000U); (*((uint16_t *)(u32TimerBRegAddrChannel + 4U * TIMERB_CHANNEL_INTERVAL))) = (u32CalBuf * u32Duty / 1000U);
/*TAUB0CDR3 = (u32CalBuf * u32Duty / 100U); */ /*duty*/ /*TAUB0CDR3 = (u32CalBuf * u32Duty / 100U); */ /*duty*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X44U; u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X44U;
(*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit; (*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit;
/*TAUB0RDT = (u16TimerBbit);*/ /*TAUB0RDT = (u16TimerBbit);*/
} }
} }
void TimerB_PWM_Channel_Start(TIMERB_Channel_en_t enTimerBChannel) void TimerB_PWM_Channel_Start(TIMERB_Channel_en_t enTimerBChannel)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL; uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL;
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C4U; uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C4U;
(*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit; (*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit;
/* TAUB0TS = (u16TimerBbit);*/ /* TAUB0TS = (u16TimerBbit);*/
} }
/*调用该函数后,仅重新调用开始函数功能即可正常使用*/ /*调用该函数后,仅重新调用开始函数功能即可正常使用*/
void TimerB_PWM_Channel_Stop(TIMERB_Channel_en_t enTimerBChannel) void TimerB_PWM_Channel_Stop(TIMERB_Channel_en_t enTimerBChannel)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)); uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL));
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C8U; uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C8U;
(*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit; (*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit;
/*TAUB0TT = (u16TimerBbit);*/ /*TAUB0TT = (u16TimerBbit);*/
} }
/*仅休眠时可调用,调用该函数后需要重新初始化相关通道才可以正常使用。*/ /*仅休眠时可调用,调用该函数后需要重新初始化相关通道才可以正常使用。*/
void TimerB_PWM_Channel_Sleep(TIMERB_Channel_en_t enTimerBChannel) void TimerB_PWM_Channel_Sleep(TIMERB_Channel_en_t enTimerBChannel)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL; uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL;
uint16_t u16TimerBRegTOL = 0U; uint16_t u16TimerBRegTOL = 0U;
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C8U; uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C8U;
(*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit; (*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit;
/*TAUB0TT = (u16TimerBbit);*/ /*TAUB0TT = (u16TimerBbit);*/
u16TimerBbit = u16TimerBbit * (TIMERB_CHANNEL_BIT_MUL - 1U) / TIMERB_CHANNEL_BIT_MUL; u16TimerBbit = u16TimerBbit * (TIMERB_CHANNEL_BIT_MUL - 1U) / TIMERB_CHANNEL_BIT_MUL;
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X40U; u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X40U;
u16TimerBRegTOL = (*((uint16_t *)u32TimerBRegAddrChannel)); u16TimerBRegTOL = (*((uint16_t *)u32TimerBRegAddrChannel));
/*u16TimerBRegTOL=TAUB0TOL*/ /*u16TimerBRegTOL=TAUB0TOL*/
u16TimerBRegTOL &= u16TimerBbit; u16TimerBRegTOL &= u16TimerBbit;
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X5CU; u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X5CU;
*((uint16_t *)u32TimerBRegAddrChannel) &= (~u16TimerBbit); *((uint16_t *)u32TimerBRegAddrChannel) &= (~u16TimerBbit);
/*TAUB0TOE &= ~u16TimerBbit;*/ /*TAUB0TOE &= ~u16TimerBbit;*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X58U; u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X58U;
if (u16TimerBRegTOL) if (u16TimerBRegTOL)
{ {
*((uint16_t *)u32TimerBRegAddrChannel) |= (u16TimerBbit); *((uint16_t *)u32TimerBRegAddrChannel) |= (u16TimerBbit);
/*TAUB0TO |= u16TimerBbit;*/ /*TAUB0TO |= u16TimerBbit;*/
} }
else else
{ {
*((uint16_t *)u32TimerBRegAddrChannel) &= (~u16TimerBbit); *((uint16_t *)u32TimerBRegAddrChannel) &= (~u16TimerBbit);
/*TAUB0TO &= ~u16TimerBbit;*/ /*TAUB0TO &= ~u16TimerBbit;*/
} }
} }
/*------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------*/
...@@ -840,90 +841,90 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock ...@@ -840,90 +841,90 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock
static void TimerB_Input_Capture_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock, TIMERB_Edge_en_t enTimerBEdge) static void TimerB_Input_Capture_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock, TIMERB_Edge_en_t enTimerBEdge)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16ClockSelectRe = (0x156U | (enTimerBClock << 14U)); uint16_t u16ClockSelectRe = (0x156U | (enTimerBClock << 14U));
uint16_t u16TimerBbit = (1U << u8TimerBChannel); uint16_t u16TimerBbit = (1U << u8TimerBChannel);
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = 0U; uint32_t u32TimerBRegAddrChannel = 0U;
/*control*/ /*control*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel);
*((uint16_t *)u32TimerBRegAddrChannel) = u16ClockSelectRe; *((uint16_t *)u32TimerBRegAddrChannel) = u16ClockSelectRe;
/*TAUB0CMOR10 = u16ClockSelectRe;*/ /*TAUB0CMOR10 = u16ClockSelectRe;*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0XC0U + (4U * u8TimerBChannel); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0XC0U + (4U * u8TimerBChannel);
*((uint8_t *)u32TimerBRegAddrChannel) = (uint8_t)enTimerBEdge; *((uint8_t *)u32TimerBRegAddrChannel) = (uint8_t)enTimerBEdge;
/*TAUB0CMUR10 = enTimerBEdge;*/ /*TAUB0CMUR10 = enTimerBEdge;*/
/*output mode*/ /*output mode*/
/*Simultaneous rewrite */ /*Simultaneous rewrite */
} }
/**/ /**/
static void TimerB_Interval_Timer_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock) static void TimerB_Interval_Timer_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16ClockSelectRe = (0x00U | (enTimerBClock << 14U)); uint16_t u16ClockSelectRe = (0x00U | (enTimerBClock << 14U));
uint16_t u16TimerBbit = (1U << u8TimerBChannel); uint16_t u16TimerBbit = (1U << u8TimerBChannel);
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = 0U; uint32_t u32TimerBRegAddrChannel = 0U;
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X200U + (4U * u8TimerBChannel);
*((uint16_t *)u32TimerBRegAddrChannel) = u16ClockSelectRe; *((uint16_t *)u32TimerBRegAddrChannel) = u16ClockSelectRe;
/*TAUB0CMOR3 = u16ClockSelectRe;*/ /*TAUB0CMOR3 = u16ClockSelectRe;*/
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0XC0U + (4U * u8TimerBChannel); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0XC0U + (4U * u8TimerBChannel);
*((uint8_t *)u32TimerBRegAddrChannel) = 0U; *((uint8_t *)u32TimerBRegAddrChannel) = 0U;
/*TAUB0CMUR3 = 0U;*/ /*TAUB0CMUR3 = 0U;*/
/*output mode*/ /*output mode*/
/*Simultaneous rewrite */ /*Simultaneous rewrite */
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * u8TimerBChannel); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * u8TimerBChannel);
*((uint16_t *)u32TimerBRegAddrChannel) = 0xFFFFU; *((uint16_t *)u32TimerBRegAddrChannel) = 0xFFFFU;
/*TAUB0CDR9 = 0xFFFFU;*/ /*TAUB0CDR9 = 0xFFFFU;*/
} }
void TimerB_Input_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock, TIMERB_Edge_en_t enTimerBEdge) void TimerB_Input_Channel_Init(TIMERB_Channel_en_t enTimerBChannel, TIMERB_Clock_en_t enTimerBClock, TIMERB_Edge_en_t enTimerBEdge)
{ {
TimerB_Input_Capture_Channel_Init(enTimerBChannel, enTimerBClock, enTimerBEdge); TimerB_Input_Capture_Channel_Init(enTimerBChannel, enTimerBClock, enTimerBEdge);
TimerB_Interval_Timer_Channel_Init(enTimerBChannel - 1, enTimerBClock); TimerB_Interval_Timer_Channel_Init(enTimerBChannel - 1, enTimerBClock);
/* /*
R_DEV_IntEnable(R_DEV_INT_TAUB0I9, 1U); R_DEV_IntEnable(R_DEV_INT_TAUB0I9, 1U);
R_DEV_IntEnable(R_DEV_INT_TAUB0I10, 1U); R_DEV_IntEnable(R_DEV_INT_TAUB0I10, 1U);
*/ */
} }
void TimerB_Input_Channel_Start(TIMERB_Channel_en_t enTimerBChannel) void TimerB_Input_Channel_Start(TIMERB_Channel_en_t enTimerBChannel)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL; uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL;
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C4U; uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C4U;
(*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit; (*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit;
/* TAUB0TS = (u16TimerBbit);*/ /* TAUB0TS = (u16TimerBbit);*/
} }
void TimerB_Input_Channel_Stop(TIMERB_Channel_en_t enTimerBChannel) void TimerB_Input_Channel_Stop(TIMERB_Channel_en_t enTimerBChannel)
{ {
uint8_t u8TimerBIndex = enTimerBChannel / 16U; uint8_t u8TimerBIndex = enTimerBChannel / 16U;
uint8_t u8TimerBChannel = enTimerBChannel % 16U; uint8_t u8TimerBChannel = enTimerBChannel % 16U;
uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL; uint16_t u16TimerBbit = (1U << (u8TimerBChannel - TIMERB_CHANNEL_INTERVAL)) * TIMERB_CHANNEL_BIT_MUL;
uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U); uint32_t u32TimerBRegBaseAddr = TIMERB_BASE_ADDRESSES + (u8TimerBIndex * 0X1000U);
uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C8U; uint32_t u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + 0X1C8U;
(*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit; (*((uint16_t *)u32TimerBRegAddrChannel)) = u16TimerBbit;
/*TAUB0TT = (u16TimerBbit);*/ /*TAUB0TT = (u16TimerBbit);*/
} }
uint32_t u32YZHDTest4=0; uint32_t u32YZHDTest4 = 0;
uint32_t u32YZHDTest5=0; uint32_t u32YZHDTest5 = 0;
/*捕获中断*/ /*捕获中断*/
void TimerB_Input_Isr(TIMERB_Channel_en_t enTimerBChannel) void TimerB_Input_Isr(TIMERB_Channel_en_t enTimerBChannel)
{ {
...@@ -940,7 +941,7 @@ void TimerB_Input_Isr(TIMERB_Channel_en_t enTimerBChannel) ...@@ -940,7 +941,7 @@ void TimerB_Input_Isr(TIMERB_Channel_en_t enTimerBChannel)
uint32_t u32TimerBChannelClock = 0UL; uint32_t u32TimerBChannelClock = 0UL;
uint32_t u32TimerBChannelData = 0UL; uint32_t u32TimerBChannelData = 0UL;
uint32_t i=0; uint32_t i = 0;
u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * (u8TimerBChannel)); u32TimerBRegAddrChannel = u32TimerBRegBaseAddr + (4U * (u8TimerBChannel));
...@@ -954,13 +955,13 @@ uint32_t i=0; ...@@ -954,13 +955,13 @@ uint32_t i=0;
TimerB_Cal_Fre(enTimerBChannel, u32TimerBChannelClock, u32TimerBChannelData); TimerB_Cal_Fre(enTimerBChannel, u32TimerBChannelClock, u32TimerBChannelData);
R_DEV_IntClearFlag(R_DEV_INT_TAUB0I0+enTimerBChannel); R_DEV_IntClearFlag(R_DEV_INT_TAUB0I0 + enTimerBChannel);
for ( i = 0; i < 600; i++) for ( i = 0; i < 600; i++)
{ {
u32YZHDTest4++; u32YZHDTest4++;
} }
} }
/*溢出中断*/ /*溢出中断*/
void TimerB_Overflow_Isr(void) void TimerB_Overflow_Isr(void)
...@@ -986,12 +987,12 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock ...@@ -986,12 +987,12 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock
{ {
u32TimeOut = 0 ; u32TimeOut = 0 ;
if(N_Count < 2) if (N_Count < 2)
{ {
N_Count ++ ; N_Count ++ ;
} }
u32TimerBInputData = u16TimerBCount; u32TimerBInputData = u16TimerBCount;
if(N_Count > 1) if (N_Count > 1)
{ {
Fre_Event = 1 ; Fre_Event = 1 ;
if (u32TimerBInputDataLast < u32TimerBInputData) if (u32TimerBInputDataLast < u32TimerBInputData)
...@@ -1012,7 +1013,7 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock ...@@ -1012,7 +1013,7 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock
u32TimerBInputDataLast = u32TimerBInputData; u32TimerBInputDataLast = u32TimerBInputData;
if (u32TimerBInputDataDif) if (u32TimerBInputDataDif)
{ {
u32TimerBInputFre = u32TimerBClockFre * 100 / u32TimerBInputDataDif; u32TimerBInputFre = u32TimerBClockFre * 100 / u32TimerBInputDataDif;
} }
} }
...@@ -1023,7 +1024,7 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock ...@@ -1023,7 +1024,7 @@ void TimerB_Cal_Fre(TIMERB_Channel_en_t enTimerBChannel, uint32_t u32TimerBClock
void TimerB_Fre_Timeout(uint8_t Time) void TimerB_Fre_Timeout(uint8_t Time)
{ {
if(u32TimeOut < FRE_VEH_TIMEOUT) if (u32TimeOut < FRE_VEH_TIMEOUT)
{ {
u32TimeOut += Time ; u32TimeOut += Time ;
} }
...@@ -1048,7 +1049,7 @@ uint16_t Get_Veh_Fre(void) ...@@ -1048,7 +1049,7 @@ uint16_t Get_Veh_Fre(void)
return (uint16_t)u32Result ; return (uint16_t)u32Result ;
} }
uint8_t Get_Veh_Fre_Event(void) uint8_t Get_Veh_Fre_Event(void)
{ {
uint8_t u8Result = 0 ; uint8_t u8Result = 0 ;
u8Result = Fre_Event ; u8Result = Fre_Event ;
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
#include "init.h" #include "init.h"
#include "Sys_Scheduler.h" #include "Sys_Scheduler.h"
#include "Sys_Tick.h" #include "Sys_Tick.h"
#include "kwp2000_tp.h"
#include "kwp2000_protocol.h"
typedef struct typedef struct
{ {
...@@ -25,6 +27,8 @@ Sys_Scheduling_st_t SysScheduling; ...@@ -25,6 +27,8 @@ Sys_Scheduling_st_t SysScheduling;
static void Sys_Exact_50us_Task_Handler(void); static void Sys_Exact_50us_Task_Handler(void);
static void Sys_Exact_100ms_Task_Handler(void); static void Sys_Exact_100ms_Task_Handler(void);
static uint8_t u08_1ms_count;
void Sys_Init(void) void Sys_Init(void)
{ {
...@@ -98,6 +102,16 @@ void Sys_Scheduling_Service(void) ...@@ -98,6 +102,16 @@ void Sys_Scheduling_Service(void)
static void Sys_Exact_50us_Task_Handler(void) static void Sys_Exact_50us_Task_Handler(void)
{ {
Sys_Exact_50us_Tasks(); Sys_Exact_50us_Tasks();
/*----K_Line----*/
u08_1ms_count ++;
if (u08_1ms_count >= 20)
{
u08_1ms_count = 0;
Kwp2000_ComInit_Handle();
Kwp2000_Handle(); /* qitiancun */
Kwp2000_Timeout();
}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment