-
APM32F107串口中断接收丢包
[color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]APM32F107在串口同时发送和接收的情况下串口接收丢字节,具体表现为偶发进入串口接收中断了,但是USART_FLAG_RXBNE标志位没有触发,导致读不到这个字节进而丢字节,通过计数发现进入中断的次数与实际应该收到的字节数一致。1、发送是阻塞式发送的,没有用发送中断,排除进入的是发送中断的可能。[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]2、出现这种情况时打断点看了,其他的溢出及错误标志位并没有置位,也打印检查了,没有置位。[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]3、排查代码了没有在其他地方主动调用USART_RxDatad读取。[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]4、串口中断优先级已调至最高。[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]5、只接收不发送不会丢字节,挂一晚上都不丢,只要一发送接收就会丢。[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]发送代码:[/size][/font][/backcolor][/color] [color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]void[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(153, 0, 0)][font=Tahoma, "][size=16px][b]Uart1_Send[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]([/size][/font][/backcolor][/color][color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]char[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] buf)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]{[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]uint16_t[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] data_9th = buf;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] dog_feed_count_clean(); [/size][/font][/backcolor][/color][color=rgb(136, 136, 136)][font=Tahoma, "][size=16px]// 循环清除喂狗变量,超过DOG_PROTECT_TIME_100MS不清除则认为主循环异常,并停止喂狗。[/size][/font][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]if[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] (g_rParameters.sPort[[/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]0[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]].ucParity == UART_CHK_MARK)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] data_9th |= ([/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]1[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] << (uart1_data_bit - [/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]1[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]));[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]else[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]if[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] (g_rParameters.sPort[[/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]0[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]].ucParity == UART_CHK_SPACE)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] data_9th &= ~([/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]1[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] << (uart1_data_bit - [/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]1[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]));[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] WAIT_TX_EMPTY; [/size][/font][/backcolor][/color][color=rgb(136, 136, 136)][font=Tahoma, "][size=16px]// wait data register empty//等待发送完[/size][/font][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] USART_TxData(USART1, data_9th);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]}[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]接收中断:[/size][/font][/backcolor][/color] [color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]void[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(153, 0, 0)][font=Tahoma, "][size=16px][b]USART1_IRQHandler[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]([/size][/font][/backcolor][/color][color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]void[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px])[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]{[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]uint8_t[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] data;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]uint8_t[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] longth = g_sParameters.sPort[[/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]0[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]].ucDataSize;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]if[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] (USART_ReadStatusFlag(USART1, USART_FLAG_OVRE) == SET)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(136, 136, 136)][font=Tahoma, "][size=16px]// 由软件清0,先读取USART_STS寄存器,再读USART_DATA寄存器完成清0。[/size][/font][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] USART_RxData(USART1);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]if[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] (USART_ReadStatusFlag(USART1, USART_FLAG_RXBNE) == SET)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] data = ([/size][/font][/backcolor][/color][color=rgb(68, 85, 136)][font=Tahoma, "][size=16px][b]uint8_t[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px])USART_RxData(USART1); [/size][/font][/backcolor][/color][color=rgb(136, 136, 136)][font=Tahoma, "][size=16px]// fetch recv data from buffer[/size][/font][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]if[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] (g_sParameters.sPort[[/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]0[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]].ucParity != UART_CHK_NONE)[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] data = data & (~([/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]1[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] << longth)); [/size][/font][/backcolor][/color][color=rgb(136, 136, 136)][font=Tahoma, "][size=16px]// 去掉校验位[/size][/font][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]if[/b][/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] (AtCmd_enter_mode([/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]0[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px], data) == [/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]1[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px])[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] packet_count = [/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]0[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px];[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(0, 0, 0)][font=Tahoma, "][size=16px][b]else[/b][/size][/font][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] {[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] packet_count = [/size][/font][/backcolor][/color][color=rgb(0, 153, 153)][font=Tahoma, "][size=16px]0[/size][/font][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px];[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] uart1_rx_ringbuf_push(&uart1_rx_ringbuf, data);[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][color=rgb(136, 136, 136)][font=Tahoma, "][size=16px]// uart_rec_len ++;[/size][/font][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] usart_recv_total_len++;[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] }[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px] timer_pack_reset_func();[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=16px]}[/size][/font][/backcolor][/color]
1104浏览量 12回复量 关注量 -
pic18的串口使用pps配置输入无法进入串口中断 sos
static unsigned char uart_map(_Class_Def_UART_CONFIG uart){ uint16_t baud = _XTAL_FREQ/4/uart.UART_BAUD-1; IO_SET_INPUT(uart.UART_RX_PIN); IO_SET_OUTPUT(uart.UART_TX_PIN); IO_SET_Digital(uart.UART_RX_PIN); IO_SET_Digital(uart.UART_TX_PIN); if(uart.UART_IDX == UART1){ PIE4bits.U1RXIE = 0;PIE4bits.U1TXIE = 0; U1RXPPS = uart.UART_RX_PIN; *(OUT_PPS_LIST[uart.UART_TX_PIN]) = UART1_TX; U1BRGL = (uint8_t)(baud%256); U1BRGH = (uint8_t)(baud/256); PIE4bits.U1RXIE = 1; return 1; } } 上述代码的RX_PIN,TX_PIN是0x00-0x17,以上代码的tx引脚成功配置,但是rx引脚配置完成后无法进入串口中断,发送的消息接受不到
3117浏览量 0回复量 关注量 -
AC78406 多个串口中断失效 sos
各位前辈好。第一次用AC78406芯片。使用uart0 uart1中断接受不定长数据。单个串口可以接收了。两个串口同时使用只有先初始化的那个串口可以进入中断。请问哪里配置有问题吗?代码是用AutoGen Studio生成的。[color=#dadada][backcolor=rgb(30, 30, 30)][font=Consolas, "][color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]string.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]ckgen_drv.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]gpio_drv.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]gpio_hw.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]uart_drv.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]uart_hw.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]uart_irq.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]dma_drv.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]gpio.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]drv_comm.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]FreeRTOS.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]event_groups.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]include[/color][color=#c8c8c8] [/color][color=#e8c9bb]"[/color][color=#ce9178]ac7840x_irq_cb.h[/color][color=#e8c9bb]"[/color] [color=#b4b4b4]#[/color][color=#9a9a9a]define[/color][color=#c8c8c8] [/color][color=#beb7ff]RECELENGTHMAX[/color][color=#c8c8c8] [/color][color=#b5cea8]1024[/color] [color=#569cd6]static[/color] [color=#4ec9b0]uart_state_t[/color] [color=#c8c8c8]s_uart0State[/color] [color=#b4b4b4]=[/color] [color=#b4b4b4]{[/color][color=#569cd6]NULL[/color][color=#b4b4b4]};[/color][color=#57a64a] /*UART运行变量状态*/[/color] [color=#569cd6]static[/color] [color=#4ec9b0]uart_state_t[/color] [color=#c8c8c8]s_uart1State[/color] [color=#b4b4b4]=[/color] [color=#b4b4b4]{[/color][color=#569cd6]NULL[/color][color=#b4b4b4]};[/color][color=#57a64a] /*UART运行变量状态*/[/color] [color=#569cd6]static[/color] [color=#4ec9b0]uart_user_config_t[/color] [color=#c8c8c8]uart0Config[/color][color=#b4b4b4];[/color] [color=#569cd6]static[/color] [color=#4ec9b0]uart_user_config_t[/color] [color=#c8c8c8]uart1Config[/color][color=#b4b4b4];[/color] [color=#569cd6]static[/color] [color=#569cd6]unsigned[/color] [color=#569cd6]char[/color] [color=#c8c8c8]g_receive0Data[/color] [color=#b4b4b4]=[/color] [color=#b5cea8]0[/color][color=#b4b4b4];[/color] [color=#569cd6]static[/color] [color=#569cd6]unsigned[/color] [color=#569cd6]short[/color] [color=#569cd6]int[/color] [color=#c8c8c8]g_receive0Data_count[/color] [color=#b4b4b4]=[/color] [color=#b5cea8]0[/color][color=#b4b4b4];[/color] [color=#569cd6]static[/color] [color=#569cd6]unsigned[/color] [color=#569cd6]char[/color] [color=#c8c8c8]receive0Data_group[/color][color=#b4b4b4][[/color][color=#beb7ff]RECELENGTHMAX[/color] [color=#b4b4b4]=[/color] [color=#b4b4b4]{[/color][color=#b5cea8]0[/color][color=#b4b4b4]};[/color] [color=#569cd6]static[/color] [color=#569cd6]unsigned[/color] [color=#569cd6]char[/color] [color=#c8c8c8]g_receive1Data[/color] [color=#b4b4b4]=[/color] [color=#b5cea8]0[/color][color=#b4b4b4];[/color] [color=#569cd6]static[/color] [color=#569cd6]unsigned[/color] [color=#569cd6]short[/color] [color=#569cd6]int[/color] [color=#c8c8c8]g_receive1Data_count[/color] [color=#b4b4b4]=[/color] [color=#b5cea8]0[/color][color=#b4b4b4];[/color] [color=#569cd6]static[/color] [color=#569cd6]unsigned[/color] [color=#569cd6]char[/color] [color=#c8c8c8]receive1Data_group[/color][color=#b4b4b4][[/color][color=#beb7ff]RECELENGTHMAX[/color] [color=#b4b4b4]=[/color] [color=#b4b4b4]{[/color][color=#b5cea8]0[/color][color=#b4b4b4]};[/color] [color=#4ec9b0]EventGroupHandle_t[/color] [color=#c8c8c8]EventGroupHandle_uart[/color] [color=#b4b4b4]=[/color] [color=#569cd6]NULL[/color][color=#b4b4b4];[/color] [color=#57a64a]/**[/color] [color=#57a64a] * [/color][color=#569cd6]@brief[/color][color=#57a64a] This function handle UART0 rx interrupt.[/color] [color=#57a64a] * [/color][color=#569cd6]@param[/color][color=#57a64a][[/color][color=#569cd6]in[/color][color=#57a64a]] [/color][color=#9a9a9a]driverState[/color][color=#57a64a]: callback parameter[/color] [color=#57a64a] * [/color][color=#569cd6]@param[/color][color=#57a64a][[/color][color=#569cd6]in[/color][color=#57a64a]] [/color][color=#9a9a9a]event[/color][color=#57a64a]: callback parameter[/color] [color=#57a64a] * [/color][color=#569cd6]@param[/color][color=#57a64a][[/color][color=#569cd6]in[/color][color=#57a64a]] [/color][color=#9a9a9a]userData[/color][color=#57a64a]: callback parameter[/color] [color=#57a64a] * [/color][color=#569cd6]@return[/color][color=#57a64a] none[/color] [color=#57a64a] */[/color] [color=#569cd6]void[/color] [color=#dcdcaa]UART0_RX_IRQHandler_Callback[/color][color=#b4b4b4]([/color][color=#569cd6]void[/color] [color=#b4b4b4]*[/color][color=#9a9a9a]driverState[/color][color=#b4b4b4],[/color] [color=#4ec9b0]uint32_t[/color] [color=#9a9a9a]event[/color][color=#b4b4b4],[/color] [color=#569cd6]void[/color] [color=#b4b4b4]*[/color][color=#9a9a9a]userData[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#57a64a] /* USER CODE BEGIN UART0_RX_IRQHandler_Callback */[/color] [color=#d8a0df]if[/color] [color=#b4b4b4]([/color][color=#9a9a9a]event[/color] [color=#b4b4b4]==[/color] [color=#b5cea8]UART_EVENT_RX_FULL[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#b4b4b4] [/color][color=#57a64a]// xEventGroupSetBits(EventGroupHandle_uart1, EVENT_UART1_RX);[/color] [color=#c8c8c8]receive0Data_group[/color][color=#b4b4b4][[/color][color=#c8c8c8]g_receive0Data_count[/color] [color=#b4b4b4]=[/color] [color=#c8c8c8]g_receive0Data[/color][color=#b4b4b4];[/color] [color=#c8c8c8]g_receive0Data_count[/color][color=#b4b4b4]++;[/color] [color=#d8a0df]if[/color] [color=#b4b4b4]([/color][color=#c8c8c8]g_receive0Data_count[/color] [color=#b4b4b4]>=[/color] [color=#beb7ff]RECELENGTHMAX[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#c8c8c8]g_receive0Data_count[/color] [color=#b4b4b4]=[/color] [color=#b5cea8]0[/color][color=#b4b4b4];[/color] [color=#b4b4b4]}[/color] [color=#b4b4b4]}[/color] [color=#dcdcaa]UART_DRV_ReceiveData[/color][color=#b4b4b4]([/color][color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]g_receive0Data[/color][color=#b4b4b4],[/color] [color=#b5cea8]1[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* USER CODE END UART0_RX_IRQHandler_Callback */[/color] [color=#b4b4b4]}[/color] [color=#57a64a]/**[/color] [color=#57a64a] * [/color][color=#569cd6]@brief[/color][color=#57a64a] This function handle UART1 rx interrupt.[/color] [color=#57a64a] * [/color][color=#569cd6]@param[/color][color=#57a64a][[/color][color=#569cd6]in[/color][color=#57a64a]] [/color][color=#9a9a9a]driverState[/color][color=#57a64a]: callback parameter[/color] [color=#57a64a] * [/color][color=#569cd6]@param[/color][color=#57a64a][[/color][color=#569cd6]in[/color][color=#57a64a]] [/color][color=#9a9a9a]event[/color][color=#57a64a]: callback parameter[/color] [color=#57a64a] * [/color][color=#569cd6]@param[/color][color=#57a64a][[/color][color=#569cd6]in[/color][color=#57a64a]] [/color][color=#9a9a9a]userData[/color][color=#57a64a]: callback parameter[/color] [color=#57a64a] * [/color][color=#569cd6]@return[/color][color=#57a64a] none[/color] [color=#57a64a] */[/color] [color=#569cd6]void[/color] [color=#dcdcaa]UART1_RX_IRQHandler_Callback[/color][color=#b4b4b4]([/color][color=#569cd6]void[/color] [color=#b4b4b4]*[/color][color=#9a9a9a]driverState[/color][color=#b4b4b4],[/color] [color=#4ec9b0]uint32_t[/color] [color=#9a9a9a]event[/color][color=#b4b4b4],[/color] [color=#569cd6]void[/color] [color=#b4b4b4]*[/color][color=#9a9a9a]userData[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#57a64a] /* USER CODE BEGIN UART1_RX_IRQHandler_Callback */[/color] [color=#d8a0df]if[/color] [color=#b4b4b4]([/color][color=#9a9a9a]event[/color] [color=#b4b4b4]==[/color] [color=#b5cea8]UART_EVENT_RX_FULL[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#b4b4b4] [/color][color=#57a64a]// xEventGroupSetBits(EventGroupHandle_uart1, EVENT_UART1_RX);[/color] [color=#c8c8c8]receive1Data_group[/color][color=#b4b4b4][[/color][color=#c8c8c8]g_receive1Data_count[/color] [color=#b4b4b4]=[/color] [color=#c8c8c8]g_receive1Data[/color][color=#b4b4b4];[/color] [color=#c8c8c8]g_receive1Data_count[/color][color=#b4b4b4]++;[/color] [color=#d8a0df]if[/color] [color=#b4b4b4]([/color][color=#c8c8c8]g_receive1Data_count[/color] [color=#b4b4b4]>=[/color] [color=#beb7ff]RECELENGTHMAX[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#c8c8c8]g_receive1Data_count[/color] [color=#b4b4b4]=[/color] [color=#b5cea8]0[/color][color=#b4b4b4];[/color] [color=#b4b4b4]}[/color] [color=#b4b4b4]}[/color] [color=#dcdcaa]UART_DRV_ReceiveData[/color][color=#b4b4b4]([/color][color=#b5cea8]1[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]g_receive1Data[/color][color=#b4b4b4],[/color] [color=#b5cea8]1[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* USER CODE END UART1_RX_IRQHandler_Callback */[/color] [color=#b4b4b4]}[/color] [color=#57a64a]/* UART0 init function */[/color] [color=#569cd6]static[/color] [color=#569cd6]void[/color] [color=#dcdcaa]ATC_UART0_Init[/color][color=#b4b4b4]([/color][color=#569cd6]void[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#dcdcaa]memset[/color][color=#b4b4b4](&[/color][color=#c8c8c8]uart0Config[/color][color=#b4b4b4],[/color] [color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#569cd6]sizeof[/color][color=#b4b4b4]([/color][color=#c8c8c8]uart0Config[/color][color=#b4b4b4]));[/color] [color=#57a64a] /**[/color] [color=#57a64a] GPIO Configuration for UART0[/color] [color=#57a64a] PB1 --> UART0_TX[/color] [color=#57a64a] PB0 --> UART0_RX[/color] [color=#57a64a] */[/color] [color=#dcdcaa]GPIO_DRV_SetMuxModeSel[/color][color=#b4b4b4]([/color][color=#beb7ff]PORTB[/color][color=#b4b4b4],[/color] [color=#b5cea8]1[/color][color=#b4b4b4],[/color] [color=#b5cea8]PORT_MUX_ALT2[/color][color=#b4b4b4]);[/color] [color=#dcdcaa]GPIO_DRV_SetMuxModeSel[/color][color=#b4b4b4]([/color][color=#beb7ff]PORTB[/color][color=#b4b4b4],[/color] [color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#b5cea8]PORT_MUX_ALT2[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* UART0 interrupt1 Init */[/color] [color=#dcdcaa]NVIC_SetPriority[/color][color=#b4b4b4]([/color][color=#b5cea8]UART0_IRQn[/color][color=#b4b4b4],[/color] [color=#b5cea8]0[/color][color=#b4b4b4]);[/color] [color=#dcdcaa]NVIC_EnableIRQ[/color][color=#b4b4b4]([/color][color=#b5cea8]UART0_IRQn[/color][color=#b4b4b4]);[/color] [color=#c8c8c8]uart0Config[/color][color=#b4b4b4].[/color]baudRate [color=#b4b4b4]=[/color] [color=#b5cea8]38400[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart0Config[/color][color=#b4b4b4].[/color]parityMode [color=#b4b4b4]=[/color] [color=#b5cea8]UART_PARITY_DISABLED[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart0Config[/color][color=#b4b4b4].[/color]stopBitCount [color=#b4b4b4]=[/color] [color=#b5cea8]UART_ONE_STOP_BIT[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart0Config[/color][color=#b4b4b4].[/color]bitCountPerChar [color=#b4b4b4]=[/color] [color=#b5cea8]UART_8_BITS_PER_CHAR[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart0Config[/color][color=#b4b4b4].[/color]transferType [color=#b4b4b4]=[/color] [color=#b5cea8]UART_USING_INTERRUPTS[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart0Config[/color][color=#b4b4b4].[/color]rxCallback [color=#b4b4b4]=[/color] [color=#dcdcaa]UART0_RX_IRQHandler_Callback[/color][color=#b4b4b4];[/color] [color=#dcdcaa]UART_DRV_Init[/color][color=#b4b4b4]([/color][color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]s_uart0State[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]uart0Config[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* USER CODE BEGIN UART0_Init 2 */[/color] [color=#dcdcaa]UART_DRV_ReceiveData[/color][color=#b4b4b4]([/color][color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]g_receive0Data[/color][color=#b4b4b4],[/color] [color=#b5cea8]1[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* USER CODE END UART0_Init 2 */[/color] [color=#b4b4b4]}[/color] [color=#57a64a]/* UART1 init function */[/color] [color=#569cd6]static[/color] [color=#569cd6]void[/color] [color=#dcdcaa]ATC_UART1_Init[/color][color=#b4b4b4]([/color][color=#569cd6]void[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#dcdcaa]memset[/color][color=#b4b4b4](&[/color][color=#c8c8c8]uart1Config[/color][color=#b4b4b4],[/color] [color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#569cd6]sizeof[/color][color=#b4b4b4]([/color][color=#c8c8c8]uart1Config[/color][color=#b4b4b4]));[/color] [color=#57a64a] /**[/color] [color=#57a64a] GPIO Configuration for UART1[/color] [color=#57a64a] PC9 --> UART1_TX[/color] [color=#57a64a] PC8 --> UART1_RX[/color] [color=#57a64a] */[/color] [color=#dcdcaa]GPIO_DRV_SetMuxModeSel[/color][color=#b4b4b4]([/color][color=#beb7ff]PORTC[/color][color=#b4b4b4],[/color] [color=#b5cea8]9[/color][color=#b4b4b4],[/color] [color=#b5cea8]PORT_MUX_ALT2[/color][color=#b4b4b4]);[/color] [color=#dcdcaa]GPIO_DRV_SetMuxModeSel[/color][color=#b4b4b4]([/color][color=#beb7ff]PORTC[/color][color=#b4b4b4],[/color] [color=#b5cea8]8[/color][color=#b4b4b4],[/color] [color=#b5cea8]PORT_MUX_ALT2[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* UART1 interrupt1 Init */[/color] [color=#dcdcaa]NVIC_SetPriority[/color][color=#b4b4b4]([/color][color=#b5cea8]UART1_IRQn[/color][color=#b4b4b4],[/color] [color=#b5cea8]1[/color][color=#b4b4b4]);[/color] [color=#dcdcaa]NVIC_EnableIRQ[/color][color=#b4b4b4]([/color][color=#b5cea8]UART1_IRQn[/color][color=#b4b4b4]);[/color] [color=#c8c8c8]uart1Config[/color][color=#b4b4b4].[/color]baudRate [color=#b4b4b4]=[/color] [color=#b5cea8]38400[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart1Config[/color][color=#b4b4b4].[/color]parityMode [color=#b4b4b4]=[/color] [color=#b5cea8]UART_PARITY_DISABLED[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart1Config[/color][color=#b4b4b4].[/color]stopBitCount [color=#b4b4b4]=[/color] [color=#b5cea8]UART_ONE_STOP_BIT[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart1Config[/color][color=#b4b4b4].[/color]bitCountPerChar [color=#b4b4b4]=[/color] [color=#b5cea8]UART_8_BITS_PER_CHAR[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart1Config[/color][color=#b4b4b4].[/color]transferType [color=#b4b4b4]=[/color] [color=#b5cea8]UART_USING_INTERRUPTS[/color][color=#b4b4b4];[/color] [color=#c8c8c8]uart1Config[/color][color=#b4b4b4].[/color]rxCallback [color=#b4b4b4]=[/color] [color=#dcdcaa]UART1_RX_IRQHandler_Callback[/color][color=#b4b4b4];[/color] [color=#dcdcaa]UART_DRV_Init[/color][color=#b4b4b4]([/color][color=#b5cea8]1[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]s_uart1State[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]uart1Config[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* USER CODE BEGIN UART1_Init 2 */[/color] [color=#dcdcaa]UART_DRV_ReceiveData[/color][color=#b4b4b4]([/color][color=#b5cea8]1[/color][color=#b4b4b4],[/color] [color=#b4b4b4]&[/color][color=#c8c8c8]g_receive1Data[/color][color=#b4b4b4],[/color] [color=#b5cea8]1[/color][color=#b4b4b4]);[/color] [color=#57a64a] /* USER CODE END UART1_Init 2 */[/color] [color=#b4b4b4]}[/color] [color=#569cd6]void[/color] [color=#dcdcaa]drv_comm_init[/color][color=#b4b4b4]([/color][color=#569cd6]void[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#dcdcaa]memset[/color][color=#b4b4b4]([/color][color=#c8c8c8]receive0Data_group[/color][color=#b4b4b4],[/color] [color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#569cd6]sizeof[/color][color=#b4b4b4]([/color][color=#c8c8c8]receive0Data_group[/color][color=#b4b4b4]));[/color] [color=#dcdcaa]memset[/color][color=#b4b4b4]([/color][color=#c8c8c8]receive1Data_group[/color][color=#b4b4b4],[/color] [color=#b5cea8]0[/color][color=#b4b4b4],[/color] [color=#569cd6]sizeof[/color][color=#b4b4b4]([/color][color=#c8c8c8]receive1Data_group[/color][color=#b4b4b4]));[/color] [color=#c8c8c8]EventGroupHandle_uart[/color] [color=#b4b4b4]=[/color] [color=#dcdcaa]xEventGroupCreate[/color][color=#b4b4b4]();[/color] [color=#dcdcaa]ATC_UART0_Init[/color][color=#b4b4b4]();[/color] [color=#dcdcaa]ATC_UART1_Init[/color][color=#b4b4b4]();[/color] [color=#b4b4b4]}[/color] [color=#569cd6]void[/color] [color=#dcdcaa]drv_comm_write[/color][color=#b4b4b4]([/color][color=#569cd6]unsigned[/color] [color=#569cd6]char[/color] [color=#b4b4b4]*[/color][color=#9a9a9a]p_data[/color][color=#b4b4b4],[/color] [color=#569cd6]unsigned[/color] [color=#569cd6]char[/color] [color=#9a9a9a]length[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#b4b4b4]}[/color] [color=#569cd6]void[/color] [color=#dcdcaa]drv_comm_read[/color][color=#b4b4b4]([/color][color=#569cd6]void[/color][color=#b4b4b4])[/color] [color=#b4b4b4]{[/color] [color=#b4b4b4]}[/color] [/font][/backcolor][/color]
2288浏览量 0回复量 关注量 -
中断函数定义的变量如何在主函数调用 赏100家园币
STM32 串口中断接收函数定义的变量uint8_t Receive_Data ,在主函数中已经声明为全局变量exten uint8_t Receive_Data 主函数发送 Receive_Data 时 发送结果都是0,不知道时什么原因?
20093浏览量 5回复量 关注量