RT-Thread stm32 基础记录
准备工作
。
新建 Nano 工程
打开 IDE,点击【文件】-【新建】-【RT-Thread 项目】:
进入新建工程的配置向导:
注:可以通过修改 board.c 的 SystemClock_Config()
更改系统时钟。
工程创建完毕,连接硬件,可直接进行编译下载,如下所示:
编写main.c
将以下代码直接拷贝至main.c
运行结果
在创建工程向导中配置了控制台串口号及其引脚号,所以工程中已经实现了 uart 的驱动以及 rt_hw_console_output()
,默认可以进行打印。打开串口终端,可以发现在终端中执行了打印。
RT-Thread Studio 结合 STM32CubeMx 开发其他外设驱动
使用 RT-Thread Studio
新建 RT-Thread 的项目时直接就将 RT-Thread 实时操作系统移植到对应的芯片上了,省去了系统移植的步骤。
使用 STM32CubeMx
配置工具可以方便快速的配置芯片外设的时钟和引脚,使驱动的开发变得简单。
所以本文将结合这两个 IDE 的优点,介绍基于 RT-Thread Studio
和 STM32CubeMx
的驱动开发。
需要注意的是这里开发的驱动是不基于 RT-Thread 设备驱动框架的,即直接使用 STM32CubeMx
生成的 HAL 库文件来开发外设驱动。
简介
使用 RT-Thread Studio
和 STM32CubeMx
开发驱动可分为以下几个步骤
-
使用
RT-Thread Studio
新建 RT-Thread 工程 -
使用
STM32CubeMx
配置外设和系统时钟 -
复制
stm32xxxx_hal_msp.c
函数 -
修改
stm32xxxx_hal_config.h
文件,打开相应外设支持。 -
替换
board.c
文件中时钟配置函数 -
使用外设
新建 RT-Thread 项目
使用 RT-Thread Studio
新建基于 nano-v3.1.3
的工程,界面如下图所示
配置过程可总结为以下步骤:
-
定义自己的工程名及工程生成文件的存放路径
-
选择
基于芯片
创建工程,选择的 RT-Thread 版本为nano-v3.1.3
。 -
选择厂商及芯片型号
-
配置串口信息
-
配置调试器信息
工程配置完成后点击下方的 完成
按钮即可创建 RT-Thread 的工程。
基于 Studio 创建 RT-Thread 工程后,就可以基于创建的工程开发自己的驱动。下面将以 stm32l475-atk-pandora
开发板为例,讲解如何开发 ADC 驱动。
配置外设
新建基于目标板卡的 CubeMx
工程,并配置自己需要使用的外设。
例如,示例开发板的 PC2 连接的是 ADC1 的通道 3,使用 CubeMx
生成 ADC 的驱动代码的配置结果如下所示:
复制 stm32xxxx_hal_msp.c
函数
将 CubeMx
生成的代码 stm32l4xx_hal_msp.c
函数复制到 RT-Thread Studio 生成的工程中,并参与工程编译。复制完成后的结果如下图所示
由于我们并没有使用 CubeMx 生成的工程,所以这里需要将 stm32l4xx_hal_msp.c
文件中 #include "main.h"
替换为 #include "board.h"
。
打开 HAL 库配置文件对应外设的支持宏
这里我们使用了 ADC 外设,所以需要在 stm32l4xx_hal_config.h
文件中将 ADC 模块使能,取消 ADC 模块的注释即可,示例代码如下
修改系统时钟(可选)
使用 RT-Thread Studio 创建 RT-Thread 工程时默认使用的是系统内部时钟 HSI,这里需要根据自己的板卡配置将 STM32CubeMx
生成的时钟配置函数拷贝到 RT-hread 的工程中。步骤如下
-
使用 CubeMx 配置自己板卡的系统时钟,并生成代码
-
复制 CubeMx 工程中
main.c
文件的void SystemClock_Config(void)
系统时钟初始化函数 -
替换
RT-Thread Studio
生成的工程中的drv_clk.c
文件中的系统时钟配置函数void system_clock_config(int target_freq_mhz)
,如下图所示。
- 如果使用外部时钟,则需要更新工程中的
stm32xxxx_hal_conf.h
中的对应的外部时钟频率的值,以 HSE 为例,需要修改下面的时钟频率为实际使用的值:
使用外设
上述文件配置完成之后,ADC 外设就可以使用的,在 main.c
中添加外设的使用代码
ADC 外设的使用示例代码如下
编译下载工程,将开发板的 PC2 引脚连接到开发板上的地,终端打印信息如下
将开发板的 PC2 引脚连接到开发板的 3.3V 引脚,终端打印信息如下
从上面两个实验打印结果可以看出我们成功使用了 ADC 外设。
注意事项
-
board.c
文件中的系统时钟配置函数需要根据自己的板卡进行修改 -
stm32xxxx_hal_msp.c
函数中主要完成的是外设引脚和时钟的初始化,所以在使用CubeMx
生成外设的配置代码时不能选择为每个外设都生成.c/.h
文件 -
使用
CubeMx
外设时只需要配置实际使用的外设,如果stm32xxxx_hal_msp.c
文件和drv_uart.c
文件或者drv_spi.c
文件外设的初始化函数重定义,需要删除stm32xxxx_hal_msp.c
文件中外设的初始化函数。
参考链接:
- 点赞
- 收藏
- 关注作者
评论(0)