stm32串口的flag和it标志位

发布者:脑洞飞扬最新更新时间:2019-09-24 来源: eefocus关键字:stm32  串口  flag  it标志位 手机看文章 扫描二维码
随时随地手机看文章

今天用到stm32的串口,对串口进行配置进行接受数据。之后大家也可以想象到结果是什么,完全没有用哎! 


后来慢慢的发现了问题的所在,现做笔记如下:


ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);


USART_IT参数:


#define USART_IT_PE                          ((uint16_t)0x0028)


#define USART_IT_TXE                         ((uint16_t)0x0727)


#define USART_IT_TC                          ((uint16_t)0x0626)

#define USART_IT_RXNE                        ((uint16_t)0x0525)

#define USART_IT_IDLE                        ((uint16_t)0x0424)

#define USART_IT_LBD                         ((uint16_t)0x0846)

#define USART_IT_CTS                         ((uint16_t)0x096A)

#define USART_IT_ERR                         ((uint16_t)0x0060)

#define USART_IT_ORE                         ((uint16_t)0x0360)

#define USART_IT_NE                          ((uint16_t)0x0260)

#define USART_IT_FE                          ((uint16_t)0x0160)


而FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG) 


的USART_Flag参数为:


#define USART_FLAG_CTS                       ((uint16_t)0x0200)

#define USART_FLAG_LBD                       ((uint16_t)0x0100)

#define USART_FLAG_TXE                       ((uint16_t)0x0080)

#define USART_FLAG_TC                        ((uint16_t)0x0040)

#define USART_FLAG_RXNE                      ((uint16_t)0x0020)

#define USART_FLAG_IDLE                      ((uint16_t)0x0010)

#define USART_FLAG_ORE                       ((uint16_t)0x0008)

#define USART_FLAG_NE                        ((uint16_t)0x0004)

#define USART_FLAG_FE                        ((uint16_t)0x0002)


#define USART_FLAG_PE                        ((uint16_t)0x0001)


我在判断中断标志位的时候用了带有flag的宏定义导致了串口的接受中断完全没有打开

关键字:stm32  串口  flag  it标志位 引用地址:stm32串口的flag和it标志位

上一篇:关于STM32的USART_GetFlagStatus和USART_GetITStatus解析
下一篇:USART_ClearITPendingBith和 USART_ClearFlag的区别

推荐阅读最新更新时间:2024-11-13 10:44

STM32 IAP功能实现学习笔记
最早接触STM32的时候就了解到,stm32有IAP功能,但是一直没有用到,最近公司项目中用到了,我才详细的学习了这个功能,学完之后感觉这个功能很好用,也很实用,特此写下来,做个笔记,同时也希望能帮助到所有的热爱单片机的人;。 直奔主题把,最初我做了一个小实验,具体内容是: 1.写两个小程序,编译完毕生成两个bin文件 2.用stm官方提供的flashloader 下载到单片机内,不过这里需要注意的是第二个bin文件的下载地址需要更改,具体怎么改后面介绍 3.通过某种触发方式,让单片机在两个程序之间来回切换 上面是我实验的内容,在做这个小实验的前提是你必须知道怎么在两个程序之间跳转,其次你也必须知道bin文件的生成,以及生
[单片机]
STM32外部中断测试
环境: 主机:WIN7 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: STM32有20个外部中断线,其中EXTI0-EXTI15给I/O端口使用 EXTI线16连接到PVD输出 EXTI线17连接到RTC闹钟事件 EXTI线18连接到USB唤醒事件 EXTI线19连接到以太网唤醒事件(只适用于互联型产品) 源代码: 初始化: //打开NTRX外部中断 void open_ntrx_irq(void) { //定义中断结构体 NVIC_InitTypeDef NVIC_InitStructure ; //定义外部中断结构体 EXTI_InitTypeDef EXTI_InitStruc
[单片机]
STM32入门学习笔记之基础定时器实验(上)
7.1 STM32定时器概述 STM32内部共有8个定时器,其中Timer1和Timer8属于高级定时器,Timer2~Timer5属于通用定时器,8个定时器的资源独立,互不影响。 STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16位自动装载计数器(CNT)构成。STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。 通用定时器的内部结构如下图所示。 7.2 相关寄存器 要使用通用定时器的基
[单片机]
<font color='red'>STM32</font>入门学习笔记之基础定时器实验(上)
STM32+FreeRTOS+CUBEMX_学习笔记(六)PWM终极总结
PWM输出 cubemx配置: 配置时钟和输出PWM模式: 注意,使用tim4时,这里要勾选使用内部时钟 配置PWM频率和极性: 这里讲解一下: PWM频率 = 时钟频率/(分频系数 (prescaler)* 计数周期(counter period)) 这里我的时钟是72M: 那么频率就是 : 72000000除以 (7199+1),再除以(99+1)。结果为100HZ。 配置PWM时钟: 先打开RCC中的高速时钟 设置HCLk时钟频率为72M,注意我们只需要设置hclk,别的时钟就会自动设置 启动PWM和设置占空比: 位置: 下面是我们启动pwm和设置pwm占空比的函数: __HAL_TIM_SET_
[单片机]
STM32+FreeRTOS+CUBEMX_学习笔记(六)PWM终极总结
教你们STM32如何收发float类型数据
实际应用中,我们可能需要两个设备通过串口传输浮点数据: 本篇笔记为了方便演示,使用串口助手模拟其中一个设备,本篇笔记内容如下: 我们创建一个用于管理float类型数据的共用体: unionfloat_data { floatf_data; uint8_tby te ; }; 数据的流向如: 本次使用串口助手模拟发送设备,省略了第一步,主要看第②、③步。 创建两个共用体变量,用于发送与接收: unionfloat_datarx_float_data,tx_float_data; 收发相关代码: 左右滑动查看全部代码 // if(HAL_ UART _Receive(&huart3,rx_float_data.byte
[单片机]
教你们<font color='red'>STM32</font>如何收发float类型数据
单片机按键&串口控制步进电机正反转调速含程序和仿真
包含程序和仿真 功能:按键或串口发送字符指令,控制步进电机正转、反转、停止、加速、减速动作 仿真过程可直接通过按下电脑键盘控制 仿真原理图如下 单片机源程序如下: #include reg52.h #define uint unsigned int #define uchar unsigned char //------8拍----- uchar code zz ={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正转 uchar code fz ={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
[单片机]
单片机按键&<font color='red'>串口</font>控制步进电机正反转调速含程序和仿真
用Keil对STM32代码封库的实现方法
有时候,我们所写代码的具体实现方法不想让其他人知道。这时,可以用Keil对代码进行封库。 注意:在封库之前,必须确保整个工程代码能够编译通过。 下面举例说明操作步骤: 想要把工程中“firmware.c”文件封装成库文件。 1、对不封装成库的文件执行以下操作: 点击“OK”确定。对除“firmware.c”的其他文件,执行上述操作。操作完成后,会发现文件图标有所变化: 2、选择“Options for Target”- output选项卡- 选择Create Library项 3、编译整个工程,会在选定的路径 ..\Output\ 下出现 firmware.lib 文件 4、删除工程中的“fir
[单片机]
用Keil对<font color='red'>STM32</font>代码封库的实现方法
STM32 的I2C 硬使用
/* 操作对象为一24C02 */ #include STM32Lib\\stm32f10x.h #include hal.h //#define AT24C01A //24C01A,I2C时序和往后的24C02一样 #define AT24C01 //24C01,I2C的时序和普通的有点不同 #define EEPROM_ADDR 0xA0 #define I2C_PAGESIZE 4 //24C01/01A页缓冲是4个 void I2C_Configuration(void) { I2C_InitTypeDef I2C_InitStructure; GPIO_InitTypeDef GPIO_InitStruct
[单片机]
<font color='red'>STM32</font> 的I2C 硬使用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved