当前位置:网站首页>RT-Thread stm32 基础记录
RT-Thread stm32 基础记录
2022-08-04 12:50:00 【华为云】
准备工作
。
新建 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文件中外设的初始化函数。
参考链接:
边栏推荐
- Programmer Qixi Gift - How to quickly build an exclusive chat room for your girlfriend in 30 minutes
- 微信小程序使用腾讯云对象储存上传图片
- 如何治理资源浪费?百度云原生成本优化最佳实践
- 使用SQLServer复制数据库
- 企业应当实施的5个云安全管理策略
- 用VbScript控制光驱
- Unity 3D模型展示框架篇之资源打包、加载、热更(Addressable Asset System | 简称AA)
- yum 查看已经安装过的包并卸载
- LeetCode_643_子数组的最大平均数Ⅰ
- ShanDong Multi-University Training #4 A、B、C、G
猜你喜欢
随机推荐
sqlserver删除重复数据
Why is Luo Zhenyu's A-share dream so difficult to fulfill?
Js获取当前页面url参数
Diffusion Models:生成扩散模型
炫酷又高效的数据可视化大屏,做起来真的没那么难!丨极客星球
绩效考核带给员工的不能只是压力
Ultra-QuickSort
倒计时 3 天|一起看云原生 Meetup 的六大议题
从零开始配置 vim(7)——自动命令
LeetCode_424_替换后的最长重复字符
Tarjan 求有向图的强连通分量
Systemui qsSetting添加新图标
redis未授权访问漏洞【vulhub靶场】复现
从零开始配置 vim(6)——缩写
A comprehensive understanding of MOS tubes, an article is enough
Two years of independent development experience Programmers tell us the experience of making money (listen to the masters who really make money)
双目立体视觉笔记(三)三角测量、极线校正
MySQL - Explain详解
技术分享| 小程序实现音视频通话
常用代码模板1——基础语法



















