-
华大HC32F460KETA串口1无法进入其中断
以下是我的代码:/*串口接收回调函数*/staticvoidUsartRxIrqCallback(void){if(Set==USART_GetStatus(USART_CH,UsartRxNoEmpty)){uint16_tRxData;RxData=USART_RecData(USART_CH);//取出数据//rx_buffer[0]=USART_RecData(USART_CH);x=1;//为了在仿真时观察是否进入中断rx_buffer[0]=((uint8_t)RxData)&0xff;//rx_buffer[rx_counter++]=((uint8_t)RxData)&0xff;//if(rx_counter>4)//{//rx_counter=0;//}}}/*超时中断回调函数*/staticvoidUsart1TimeoutIrqCallback(void){x=1;TIMER0_Cmd(M4_TMR01,Tim0_ChannelA,Disable);USART_ClearStatus(USART_CH,UsartRxTimeOut);}/*接收错误回调函数*/staticvoidUsartErrIrqCallback(void){x=1;if(Set==USART_GetStatus(USART_CH,UsartFrameErr)){USART_ClearStatus(USART_CH,UsartFrameErr);}else{}if(Set==USART_GetStatus(USART_CH,UsartParityErr)){USART_ClearStatus(USART_CH,UsartParityErr);}else{}if(Set==USART_GetStatus(USART_CH,UsartOverrunErr)){USART_ClearStatus(USART_CH,UsartOverrunErr);}else{}}/*串口初始化配置*/voidusart1_init(void){en_result_tenRet=Ok;stc_irq_regi_conf_tstcIrqRegiCfg;//用于中断配置的结构体/*开启外设时钟clock*/PWC_Fcg1PeriphClockCmd(PWC_FCG1_PERIPH_USART1,Enable);/*USART对应的引脚初始化,但是引脚先失能,防止串口还没配置完成就接收导致错误*/PORT_SetFunc(USART_RX_PORT,USART_RX_PIN,USART_RX_FUNC,Disable);PORT_SetFunc(USART_TX_PORT,USART_TX_PIN,USART_TX_FUNC,Disable);conststc_usart_uart_init_tstcInitCfg={UsartIntClkCkNoOutput,//使用内部时钟源,不需要在其时钟输出IO上输出通信的时钟信号UsartClkDiv_1,//始终不分频UsartDataBits8,//一个字节8位UsartDataLsbFirst,//先传输低位UsartOneStopBit,//停止位1位UsartParityNone,//无奇偶校验位UsartSampleBit8,//每次传输1字节(8bit),也可以传输16位Usar
2022-07-22 0