STM32库USART_ITConfig的坑

2023-05-16

USART_ITConfig只能使用一个中断标志!

看看中断参数的定义:

#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_ORE_RX                      ((uint16_t)0x0325) /* In case interrupt is generated if the RXNEIE bit is set */
#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_ER                      ((uint16_t)0x0360) /* In case interrupt is generated if the EIE bit is set */
#define USART_IT_NE                          ((uint16_t)0x0260)
#define USART_IT_FE                          ((uint16_t)0x0160)

如果你一不小心使用了或运算施工图配置多个中断,而又没有打开断言开关的宏,恐怕你会痛苦一阵子了!

在stm32f4xx_conf.h中,打开标志并定义函数


  
#define USE_FULL_ASSERT    1
void assert_failed(uint8_t *file, uint32_t line);
/* Uncomment the line below to expanse the "assert_param" macro in the
   Standard Peripheral Library drivers code */
#define USE_FULL_ASSERT    1

/* Exported macro ------------------------------------------------------------*/
#ifdef  USE_FULL_ASSERT

/**
  * @brief  The assert_param macro is used for function's parameters check.
  * @param  expr: If expr is false, it calls assert_failed function
  *   which reports the name of the source file and the source
  *   line number of the call that failed.
  *   If expr is true, it returns no value.
  * @retval None
  */
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
void assert_failed(uint8_t *file, uint32_t line);
#else
#define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */

void assert_failed(uint8_t *file, uint32_t line);

void assert_failed(uint8_t *file, uint32_t line);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32库USART_ITConfig的坑 的相关文章

  • 如何在 Cortex-M3 (STM32) 上从 RAM 执行函数?

    我正在尝试从 Cortex M3 处理器 STM32 上的 RAM 执行函数 该函数会擦除并重写内部闪存 所以我肯定需要在 RAM 中 但我该怎么做呢 我尝试过的是 使用 memcpy 将函数复制到 RAM 中的字节数组 检查它是否正确对齐
  • 处理器指令周期执行时间

    我的猜测是 no operation 内在 ARM 指令应花费 1 168 MHz 来执行 前提是每个NOP在一个时钟周期内执行 我想通过文档验证这一点 有关处理器指令周期执行时间的信息是否有标准位置 我试图确定 STM32f407IGh6
  • 在地址“0xXXXXXX”处中断,没有可用的调试信息,或在程序代码之外

    配置 使用 Nucleo L476RG 使用 GNU ARM Eclipse 我从 STM32CubeMX 生成了一个极简代码 我已经在我的板载 ST Link 中刷新了 J link 驱动程序 一直在尝试为我的代码运行调试器 但我的程序计
  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • 138-基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真+源程序

    资料编号 138 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 LED灯 蜂鸣器 电位器 制作一个基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真 2 通过DHT1
  • STM32用一个定时器执行多任务写法

    文章目录 main c include stm32f4xx h uint32 t Power check times 电量检测周期 uint32 t RFID Init Check times RFID检测周期 int main Timer
  • SHT10温湿度传感器——STM32驱动

    实验效果 硬件外观 接线 3 3V供电 IIC通讯 代码获取 查看下方 END
  • [MM32硬件]搭建灵动微MM32G0001A6T的简易开发环境

    作为学习单片机的经典 自然是通过GPIO点亮LED 或者是响应按钮的外部中断例程 这我们看看SOP8封装的芯片MM32G0001A6T得引脚 除了VDD和GND固定外 我们可以使用PA14 PA1 PA13 PA15 PA2 PA3这六个G
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 最终启动顺序错误 - STM32L476 的 Eclipse System Workbench 调试

    我正在尝试调试和运行 STM32L476 的简单汇编代码 我已经设置了 Eclipse Oxygen 在 Eclipse 中安装了最新版本的 System Workbench 插件并安装了 ST Link 驱动程序 IDE 成功构建了程序
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • 特殊寄存器

    特殊寄存器 文章目录 前言 一 背景 二 2 1 2 2 总结 前言 前期疑问 STM32特殊寄存器到底是什么 特殊寄存器怎么查看和调试代码 本文目标 记录和理解特殊寄存器 一 背景 最近在看ucosIII文章是 里面提到特殊寄存器 这就进
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • 嵌入式 C++11 代码 — 我需要 volatile 吗?

    采用 Cortex M3 MCU STM32F1 的嵌入式设备 它具有嵌入式闪存 64K MCU固件可以在运行时重新编程闪存扇区 这是由闪存控制器 FMC 寄存器完成的 所以它不像a b那么简单 FMC 获取缓冲区指针并将数据刻录到某个闪存
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi

随机推荐

  • px4原生源码学习-(1)

    接触px4代码有几天了 xff0c 想把自己所学所想记录下来 px4就不过多介绍了 xff0c 算得上目前使用的最广泛的开源飞控了 为什么说 px4原生代码学习呢 xff0c 这还得追溯到被大疆干死的3DR xff0c 3DR想做消费级无人
  • px4原生源码学习-(2)--实时操作系统篇

    po上我使用到的硬件和开发环境 px4硬件 xff1a 某宝销量最高的pixhawk套件 xff08 主机 xff0c gps 43 指南针 xff0c 数传 xff0c pwm转pmm xff0c 安全开关 xff0c 蜂鸣器 xff0c
  • px4原生源码学习-(3)--Nuttx实时操作系统的使用

    po上我使用到的硬件和开发环境 px4硬件 xff1a 某宝销量最高的pixhawk套件 xff08 主机 xff0c gps 43 指南针 xff0c 数传 xff0c pwm转pmm xff0c 安全开关 xff0c 蜂鸣器 xff0c
  • 为单反拍摄照片批量加入地理位置信息(POS点)和EXIF信息

    很多航测朋友对于照片中没有POS点很是懊恼 xff0c 单反同飞控是分离的 xff0c 照片由单反生成 xff0c 而POS点的数据由飞控生成 对于后期数据处理相当不利 xff0c 尤其是目前对于倾斜摄影的朋友 xff0c 地理位置信息一定
  • 解决angular中的版本问题,Metadata version mismatch for module,found version 4, expected 3

    angular版本问题解决办法 xff1b 第一步 xff1a 查出错误模块的当前安装版本 以 ng bootstrap模块为例 npm list ng bootstrap 第二步 xff1a 查出所有版本号 npm view ng boo
  • python2.7爬取京东商品评论

    大神请绕路 xff0c 新手先别急着上车 我们先来了解一下京东商品评论的地址 xff0c 他们的客户评论看似是在商品页 xff08 item jd com xff09 xff0c 但实际上是在club jd com review 这个url
  • 进入docker容器的方法

    最近想着怎么进入到容器内部 xff0c 然后把里面的配置文件拷贝出来 xff0c 下面是一些操作记录 1 进入docker容器的方法 命令 xff1a docker exec it 容器id bin sh 进入容器后相当于进入了另外一个li
  • spring bean的循环引用

    看过一次spring公开课 xff0c 记录一下bean的循环引用问题 问题 public class IndexService 64 Autowired IndexDao indexDao public class IndexDao 64
  • Excel文本格式怎么出现小三角

    左上角的小三角是文本型数字标志 xff0c 将一列数值的左上角一次性加上绿色的三角标示 就是将常规或数值型的数字改变为文本格式数字 办法 xff1a 选定该列数据 xff0c 点菜单 数据 分列 xff0c 点两次 下一步 xff0c 在
  • docker磁盘占用清理问题

    本文转自http dockone io article 3056 如何清理Docker占用的磁盘空间 编者的话 用了Docker xff0c 好处挺多的 xff0c 但是有一个不大不小的问题 xff0c 它会一不小心占用太多磁盘 xff0c
  • sql exists用法

    转自https www cnblogs com xuanhai p 5810918 html 转载于 https www cnblogs com yongan p 11362595 html
  • 深入了解QtCreator的实用功能

    重构代码 在源代码中搜索 重命名 重排代码格式是原生支持的功能 在代码中右键弹出的菜单中 xff0c 有一个Refactor菜单项 xff0c 根据当前光标位置不同的代码元素 xff0c 具有相应的重构子菜单 xff0c 可以很方便地完成很
  • ubuntu20.04server下安装hadoop2.8.5

    参考Ubuntu下Hadoop安装 xff08 全命令行版 xff09 安装环境 项目名称版本电脑硬件Huwei Matebook X Proi7 8550U 16G 512G操作系统Windows 10家庭中文版虚拟机VMware Wor
  • 几个VS/QT常见错误解决方法

    X86与X64冲突 问题 1 gt Qt5Widgetsd lib Qt5Widgetsd dll fatal error LNK1112 模块计算机类型 X86 与目标计算机类型 x64 冲突 解决方法 在Qt VS Tools里添加正确
  • NMAKE编译CTK

    NMAKE编译CTK 启动编译环境 从VC中启动命令行或通过VC提供的批处理启动命令行 xff0c 以能运行编译环境 如果装了多个VC版本 xff0c 注意使用想要的VC版本启动安装编译环境 外链图片转存失败 源站可能有防盗链机制 建议将图
  • VERILOG实现四位七段数码管显示

    filename dyp v author lyq Date 2016 3 2 9 36 Lattice XP2 17 DEMO BOARD 4位七段带小数点数码管显示控制模块 clk 50M d1 d4 d 7 dp d 6 0 ASCI
  • 网络编程一些重要的面试题

    为什么需要三次握手 xff1f 答 xff1a 三次握手的目的是 为了防止已经失效的连接请求报文段突然又传到服务端 xff0c 因而产生错误 xff0c 这种情况是 xff1a 一端 client A发出去的第一个连接请求报文并没有丢失 x
  • XILNIXSDK2018为FreeRTOS增加配置项的方法

    在安装目录下找到目录 xff1a SDK 2018 1 data embeddedsw ThirdParty bsp freertos10 xilinx v1 0 data 然后通过两个步骤来完成配置项的增加 1 编辑文件 freertos
  • STM32F系列USART的IDLE中断要注意了

    只是调用USART ClearITPendingBit之类的方法是清除不了中断标志的 xff0c 必须必须在调用USART GetITStatus之后调用 USART ReceiveData xff0c 因为IDLE被搞成了一个帧 xff0
  • STM32库USART_ITConfig的坑

    USART ITConfig只能使用一个中断标志 xff01 看看中断参数的定义 xff1a define USART IT PE uint16 t 0x0028 define USART IT TXE uint16 t 0x0727 de