STM32使用USART中断主要有一下几步:
1,定义中断结构体,和串口结构体
2,使能时钟
3,编写中断函数
4,使能中断
关于发送中断,笔者当时有个疑惑:
上图是关于状态寄存器(USART_SR)中的两位。
上图是控制寄存器1(USART_CR1)中的两位。
笔者当时的疑惑是,这两位都可以控制中断啊,DR数据被移走触发中断,DR数据被移走也会使TC为置一,也会产生中断,这尼玛不冲突了?笔者当时陷入了死循环。
后来笔者想通了,要进入发送中断,用库函数:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
这个函数时用来打开CR1中的响应位的,比如上一句,是用来打开发送完成中断的,也就是置TXEIE位为1(并且发送缓冲区最初就是空),接下来就会进入中断服务函数。这里并没有打开TCIE位(即并没有使能发送完成中断,所以不会产生冲突)。
当是以查询方式来发送数据时,并没有使能中断也没有使能中断通道,故怎么着也不会产生中断,只用查询SR寄存器就行了。
以上是笔者的一点见解,如有不对的地方请指教。
关键字:库函数 STM32f103 串口中断
引用地址:
通过库函数使用STM32f103串口中断的心得
推荐阅读最新更新时间:2024-03-16 16:23
STM32 嵌入式学习入门(3)——STM32F103 按键输入控制LED灯
按键是单片机上一个很重要的输入设备,也很容易掌握,只要明白了IO口最基本的使用,就可以操作按键了。 我们的目的是控制开发板上板载的三个按键来操作开发板上板载的两个LED灯实现亮或灭(按键第一次按下时灯亮,再按下时灯灭,以此类推)。 博主所用的开发板是正点原子的mini板(STM32F103RCT6)和战舰板(STM32F103ZET6),因此下面的内容的例子以这两款开发板为例,但是基本的原理对任何开发板来说都是一样的,只要自己的开发板上板载了按键和LED灯(这两个资源应该是所有开发板上都有的资源吧),然后查看自己开发板的数据手册和硬件电路图、原理图,找到按键和LED灯对应的IO口,就可以按照本文所介绍的流程使用按键控制LE
[单片机]
MSP432 库函数实现 PID 电机调角度、调速
平台:Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) 编码器及所用改进型PID知识见【电赛PID半天入门】从接触编码器到调出好康的PID波形 工程示例 引脚配置 PWM引脚 外部中断测量编码器引脚配置 代码部分 初始化 /* * ======== mainThread ======== */ void *mainThread(void *arg0) { My_Task_Init(Key_Task, 1, 1024); My_Task_Init(LED_Task,
[单片机]
STM32单片机(六)-STM32F103 时钟与F407时钟
STM32f103的时钟有四个来源 高速外部时钟信号(HSE)、低速外部时钟信号(LSE)、高速内部时钟信号(HSI)和低速内部时钟信号(LSI),图中分别用蓝色的①~④标注。 ①HSE高速外部时钟:由外部4~16MHz的晶体或有源晶振提供,通常采用8MHz,ST三合一板上的也是8MHz。 ②LSI低速外部时钟:外部晶体提供,主要是给实时时钟(RTC),一般为32.768kHz。 ③HSI高速内部时钟:由内部RC振荡器产生的8MHz时钟,但不够稳定。④LSI低速内部时钟:内部RC振荡器产生的供给RTC的时钟,频率在30kHz~60kHz之间,通常约40kHz。 时钟在STM32内部最终是供给四大块,图中用红色
[单片机]
STM32里的基础配置(寄存器,库函数)
前言 所有IO口配置,芯片:STM32F103R8T6 一、配置LED /**************************** 函数名称:LED_Config 函数作用:LED初始化 管脚: LED1 PB0 LED2 PB1 ****************************/ LED.c 寄存器: #include led.h void LED_Config(void) { RCC- APB2ENR |= (1 3);//GPIOB GPIOB- CRL &= ~(0XF 0);//清零操作 GPIOB- CRL |= (0X3 0); GPIOB- CRL &=
[单片机]
stm32f103 usb驱动电脑无法识别的解决办法
STM32F系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。该系列芯片按片内Flash的大小可分为三大类:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。 STM32F103电源管理: 2.0-3.6V供电和I/O引脚 上电/断电复位(POR/PDR)、可编程电压监测器(PVD) -4-16MHZ晶振振荡器- 内嵌经出厂调教的8MHz的RC振荡器- 内嵌带校准的40KHz的RC振荡器- 产生CPU时钟的PLL- 带校准的32KHz的RC振荡器 STM32F103调试模式: 串行单
[单片机]
STM32F103+ms1100+ml8511+ms5611环境质量检测仪
1、作品简介 近年来,随着城市化进程的加快以及人们对美好生活环境的日益强烈追求,人们越来越关心自己周围生活环境的情况,如PM2.5、PM10、紫外线指数等关于环境的词语也在近几年不断映入人们的眼帘,天气预报将更多的环境参数提供给人们供参考。但是天气预报或者是气象台给我们提供的信息不能实时实地地反映我们身边的环境状况,很多时候不能满足人们的需求,因此我们设计了一款无线物联网式便携式的环境质量检测仪,可以使人们更好地了解到身边的环境质量,以便于能及时地采取措施使自己处于一个更好的生活环境,并且将数据共享形成大范围内的实时环境监测。 传统环境监测仪一般都是用多台较大的测量多种不同环境参数的仪器分别测试,最后将各自的数据通过一定的通信
[单片机]
#C51串口通讯5-#一串数据#中断定时+超时接收+接收应答+CRC校验
本章前言 简介: 1.在#2章基础上(中断定时+超时接收)升级版 2.增加CRC校验方式及接收应答处理 3.指令解析,主函数执行 提示:以下是本篇文章正文内容,下面案例可供参考 一、场景 示例: 主机下发命令,从机解析并应答,CRC校验 二、编程实现 1.自定义协议 如: ##1 数据类型(功能码): 控制数码管显示0x01、蜂鸣器控制0x02 ##2从机握手应答: a.地址错误: 不予理睬 b.CRC校验正确: 完整数据返回 数据区数值显示在数码管上,仅作最大2组显示为例 c.CRC校验错误: 地址+ +数据区+CRC 2.代码设计 第一步:#C51串口通讯2-#一串数据#定时中
[单片机]
基于STM32F103RCT6的电脑鼠控制系统的设计
1 电脑鼠工作原理 电脑鼠周围安装六组红外传感器,分别感知左方、左前方、前方、右前方、右方,发射端发射一定频率的红外线,接收端通过六个方向的反射波来判断是否有障碍物,实时地储存单元格的资料,通过六组红外传感器反馈的迷宫信息,控制电脑鼠完成避障、转弯、加速等动作,运用智能算法对迷宫的部分单元格或全部单元格进行遍历,并将迷宫的信息以有效的数据结构存储,微控制器根据这些记录信息运用迷宫高效算法找到一条最优化路径,从而实现从起点到终点的最大化冲刺。 2 硬件电路设计 为完成迷宫探测和冲刺任务,电脑鼠需具备以下各功能模块:ARM微处理器作为控制核心协调各功能模块正常工作;电机及驱动模块实时控制电机启动、制动;红外检测模块
[单片机]