今天继续学习stm32的串口编程(利用库函数)。上次我们说了串口的发送,这次我们说接收。

接收可以用查询的方法,也可以用中断。显然,工程中多用中断的方式,那么就来看看中断接收。

代码其实很简单,基本的配置不变,在上次的基础上加一点(优先级的配置和接收中断的使能)就可以了。

        //Usart1 NVIC 配置NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;        //抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;       //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ通道使能NVIC_Init(&NVIC_InitStructure);    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启接收中断,这句话是关键

既然开启了接收中断,就有对应的中断服务函数。

void USART1_IRQHandler(void)  //串口1中断服务程序
{u8 rx_data = 0; //用来保存接收到的字节if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断{rx_data = USART_ReceiveData(USART1);//读取接收寄存器,自动清除中断位RXNE++rx_data;//方便调试,可以在这里打个断点}
} 

这样就实现了最最基本的功能:用键盘发送一个字节,就会进入中断,从寄存器取出这个字节。

需要说明的是:

1.  STM32 的发送与接收是通过数据寄存器 USART_DR 来实现的,这是一个双寄存器,包含了TDR和 RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到数据的时候,也是存在该寄存器内。

2.  RXNE(接收数据寄存器非空),当该位被置 1 的时候,就是提示已经有数据被接收到了,并且可以读出来了。这时候我们要做的就是尽快去读取 USART_DR,通过读 USART_DR 可以将该位清零,也可以向该位写 0,直接清除。

stm32串口学习(二)相关推荐

  1. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

  2. STM32串口学习总结(经典)

    主函数代码如下: #include "led.h" #include "delay.h" #include "sys.h" #include ...

  3. stm32串口学习(一)

    串口在工作中经常用到,今天我们从零开始学习stm32的串口编程(利用库函数). 先从最简单的情况开始,假设我们要实现的功能就是串口发送一个字节,不考虑接收,也不考虑中断. 那么要解决两个问题: 1 串 ...

  4. STM32智能门锁学习二,RFID刷卡解锁

    目录 效果如图: cube配置: 代码部分: 个人认为,这个比之前的按键解锁和蓝牙好玩哈哈哈哈== 效果如图: 首先,这个模块叫做RFID RC522射频模块,上面一共有8个引脚,其中IRQ引脚保持悬 ...

  5. openmv和stm32串口通信完成二维码识别

    openmv和stm32串口通信完成二维码识别 文章目录 前言 一.所用的硬件: 二.openmv端 2.stm32端 总结 前言 注:我只是个大一的小白,本文只完成基本功能,希望能帮助有困惑的人(我 ...

  6. K210学习笔记(一) K210与STM32串口通信相关

    文章目录 前言 一.STM32 串口中断 接收K210板子发送的ASCII码整数 转换为 多位整形数据 二.MAIX BIT(K210)与STM32串口通讯 2.1 实现MAIX BIT与XCOM之间 ...

  7. K210学习笔记(五)——MAIX BIT(K210)与STM32串口通讯

    前言 uart 模块主要用于驱动开发板上的异步串口,可以自由对 uart 进行配置.k210 一共有3个 uart,每个 uart 可以进行自由的引脚映射. 一.MAIX BIT串口使用步骤 1.引脚 ...

  8. 学习笔记——stm32串口中断函数的逻辑理解

    这片文章主要是讲解原子给的代码里面的串口中断的中断函数,前面是我个人的学习路径. 关于stm32串口的学习,主要分为以下几个点 1.USART的功能和内部结构. 功能包括同步.异步模式.双工通信.半工 ...

  9. 《STM32从零开始学习历程》——USART串口通讯实验篇1——中断接收与发送

    <STM32从零开始学习历程>@EnzoReventon USART串口通讯实验篇1--中断接收与发送 最近开始接触了STM32F4xx系列单片机,对于我这个从零开始学习的小白来说,可谓困 ...

最新文章

  1. leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法
  2. 我的机器学习入门清单及路线!
  3. android sliding tab,android – 刷新SlidingTabLayout
  4. php如何知道服务器剩余空间,远程简单地获得每台服务器的cpu与memory使用情况
  5. 人工智能改变生活的 10 种方式
  6. SqlServer中的数据类型UniqueIdentifier
  7. NoSQL系列:选择合适的数据库
  8. Java秒杀系统实战系列~基于Redis的原子操作优化秒杀逻辑
  9. NYOJ82-迷宫寻宝1
  10. 新手前端练手网站_编程到底难不难学?新手入门选择哪种语言好?
  11. 裸机中代码书写的细节总结
  12. 获取行信息_论文推荐 | 周乐韬,黄丁发,袁林果,等:基于状态和残差的北斗基准站观测数据表达与信息分级...
  13. struts2中的method
  14. 使用第三方框架解耦的一种思路—简单工厂模式的运用
  15. 搭建亿万级别短信服务发送平台
  16. NewLife kick off
  17. Python 内建函数大全
  18. JavaWeb之servlet(1)
  19. 逆水寒2021最新服务器,《逆水寒》2021上半年大事记:养娃带娃乐趣多,新职业新玩法不断更新...
  20. Web全栈工程师修养

热门文章

  1. NYOJ 864 统计
  2. scikit-learn的主要模块和基本使用
  3. Bootstrap 栅格 样式 组件 插件
  4. WP缩略图出不了,打开缩略图提示“A TimThumb error has occured”
  5. eclipse输入中文为繁体字
  6. Ajax请求,跨域小坑
  7. Sprint第三阶段(第四天12.12)
  8. 添加程序以DLL函数
  9. [导入]WCF后传系列(6):消息如何传递之绑定Part 1
  10. ASP.NET 3.5 Extensions预览版即将发布