ST意法半导体
直播中

王强

7年用户 1320经验值
私信 关注
[问答]

怎样使用STM32CubeIde 1.8.0对STM32F051进行GCC/C语言测试

(背景)我正在 STM32F051 目标上使用 STM32CubeIde 1.8.0 对 STM32F051 进行小型(GCC/C 语言)测试。这些测试正在完成 ---> 没有 HAL,较低级别的驱动程序,但我正在使用#include "cmsis_gcc.h" 来访问 CPU 中断启用/禁用/状态 <---,因此感谢您的耐心(也就是说,我不打算在这些测试中涉及 HAL 或较低级别的驱动程序)。RM0091 是我的文档资源。
(问题)USART1 配置为在 RXNE=1(接收字符)时引起中断(RXNEIE=1)。已验证设置(接受接收字符时 RXNE 变为 1,RXNEIE 为 1。)预期进入 void USART1_IRQHandler(void) 没有发生。
(问题)
1. 第 11.2.5 节:“EXti 线 25 连接到内部 USART1 唤醒事件”。这是用来让USART1中断请求到达CPU的吗?我没有使用睡眠或唤醒条件(CPU 一直在运行。)在这种情况下,“事件”与“中断”相同吗?
2. RM0091 第 11.2.4 节包含一条我不明白的指令:“• 配置控制映射到 EXTI 的 NVIC IRQ 通道的启用和屏蔽位,以便可以正确确认来自 EXTI 线路之一的中断。” 从我在 RM0091 末尾的各种示例中看到的(但是,不是在 A.19.12 节的 USART 示例中),两个重要步骤是:
NVIC_EnableIRQ();
NVIC_SetPriority();
我在 RM0091 中没有看到 NVIC 寄存器的任何定义。cmsis_gcc.h 不包含任何与 NVIC 相关的内容。此时我没有其他库或包含引用的文件。NVIC 是我可以像其他外设一样用寄存器操作的东西吗?
我相信 __enable_irq() 正在工作:__get_PRIMASK() 结果遵循基于前面的 __disable_irq() 或 __enable_irq() 的预期结果。

回帖(1)

张帆

2022-12-14 10:59:00
通过使用 CubeMX 生成一个项目,然后删除与 HAL 相关的所有内容,您可能会更幸运。没有多少。这将为您提供一个起点,其中包括适当的 CMSIS 标头和基本启动功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分