stm32 USART_IT_IDLE中断 一帧数据

USART_IT_IDLE中断,是串口收到一帧数据后,发生的中断。也可以叫做一包数据

USART_IT_IDLE和USART_IT_RXNE区别
当接收到1个字节,会产生USART_IT_RXNE中断
当接收到一帧数据,就会产生USART_IT_IDLE中断

清中断方法

1//USART_IT_RXNE 2USART_ClearITPendingBit(USART1, USART_IT_RXNE); 3 4//USART_IT_IDLE 5USART1->SR; //先读SR寄存器 6USART1->DR; //再读DR寄存器

使用举例

1u8 count; 2u8 flag; 3 4void uart_init(u32 bound) 5{ 6 ... 7 8 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 9 USART_ITConfig(USART1, USART_IT_IDLE, ENABLE); 10 11 ... 12} 13 14void USART1_IRQHandler(void) 15{ 16 u8 r; 17 18 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) 19 { 20 USART_ClearITPendingBit(USART1, USART_IT_RXNE); //只USART_ReceiveData也可以 21 22 //r = USART_ReceiveData(USART1); 23 24 count++; 25 } 26 else if(USART_GetFlagStatus(USART1, USART_FLAG_IDLE) != RESET) 27 { 28 USART1->SR; 29 USART1->DR; 30 31 flag = 1; 32 } 33} 34 35int main() 36{ 37 while(1) 38 { 39 if(flag == 1) 40 { 41 printf("count %d\r\n", count); 42 43 flag = 0; 44 count = 0; 45 } 46 47 delay_ms(10); 48 } 49}

实验现象
1

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

STM32使用HAL库DMA+空闲中断实现串口不定长数据接收

STM32使用HAL库DMA空闲中断实现串口不定长数据接收环境:STM32CubeIDESTM32F103RBWIN10HAL库V1.8首先配置串口:!在这里插入图片描述(https://img

stm32山外虚拟示波器笔记

//串口发送一个字节voidUART_send_byte(u8byte){while(!((USART1ISR)&(1<<7)));USART1TDRbyte;}voiduart_putbuff(uint8_tdata,uint32_t

STM32 中断详解

中断,在单片机中占有非常重要的地位。代码默认地从上向下执行,遇到条件或者其他语句,会按照指定的地方跳转。而在单片机执行代码的过程中,难免会有一些突发的情况需要处理,这样就会打断当前的代码,待处理完突发情况之后,程序会回到被打断的地方继续执行。1EXTI控制器外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每