在线时间11 小时
UID1872770
注册时间2015-11-14
NXP金币0
该用户从未签到
注册会员

- 积分
- 76
- 最后登录
- 2017-1-2
|
使用飞思卡尔MK22芯片做数据采集,使用RS232做数据采集的通讯口,开始的一段时间内采集的数据正常,一段时间后数据采集不正常,重启以后数据又可以采集正常,检查发现是中断没有进入导致的,这个可能是什么原因导致的呢?求大神指导!(采集数据的现场电磁干扰比较大,有时候烧写程序的时候都烧写不进)。
附录:
UART初始化程序和中断子程序
void UART1_Init(word BaudRate) {
Peripheral_Clock_Enable(UART1_INDEX);
delayMS(50);
UART1_TimeOut_Cnt = 2500000 / BaudRate; // Initialize TimeOut
SBR = (word)(CORE_CLOCK_Hz / 16 / BaudRate);
BRFA = 2 * CORE_CLOCK_Hz / BaudRate - 32 * SBR;
UART1->C2 = 0;
UART1->BDH = (byte)((SBR & 0x1F00)>>8);
UART1->BDL = (byte)( SBR & 0x00FF);
UART1->C4 = (byte)(BRFA & 0x001F);
UART1->C1 = 0;
UART1->C2 = UART_C2_RIE_MASK | UART_C2_TE_MASK | UART_C2_RE_MASK;
NVIC_SetPriority(UART1_RX_TX_IRQn, UART1_INT_PRIORITY); // Configurate NVIC
NVIC_ClearPendingIRQ(UART1_RX_TX_IRQn);
NVIC_EnableIRQ(UART1_RX_TX_IRQn);
}
// UART1 Interrupt Service Routine, RS232Ch1
void UART1_RX_TX_IRQHandler(void) {
if(UART1->S1 & UART_S1_RDRF_MASK) {
UART1_TimeOut = UART1_TimeOut_Cnt;
UART1_RX_buf[UART1_RX_num] = UART1->D;
UART1_RX_num++;
FJHY_ReceiveData(); //数据接收处理程序
}
}
|
|