当前位置:网站首页>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文件中外设的初始化函数。
参考链接:
边栏推荐
- 接入华为游戏防沉迷,点击防沉迷弹窗后游戏闪退
- d不要直接用转串
- 聚焦数据来源、数据质量和模型性能构建小微企业信用画像
- 微信小程序使用腾讯云对象储存上传图片
- PMP每日一练 | 考试不迷路-8.4(包含敏捷+多选)
- redis未授权访问漏洞【vulhub靶场】复现
- Django使用腾讯云发送短信并存入redis
- Why is Luo Zhenyu's A-share dream so difficult to fulfill?
- CLS-PEG-DBCO,胆固醇-聚乙二醇-二苯基环辛炔,可用于改善循环时间
- 【黑马早报】尚乘数科上市13天,市值超阿里;北大终止陈春花聘用合同;新东方花近200亿退学费和遣散费;张小泉75%产品贴牌代工...
猜你喜欢

leetcode 48. Rotate Image 旋转图像(Medium)

How to develop small program plug-ins to achieve profitability?

直击面试!阿里金九银十最新面试小册 稳过!

Programmer Qixi Gift - How to quickly build an exclusive chat room for your girlfriend in 30 minutes

跨链桥已成行业最大安全隐患 为什么和怎么办

LeetCode Daily Question (858. Mirror Reflection)

双目立体视觉学习笔记(一)

什么是 DevOps?看这一篇就够了!

1314元的七夕礼盒,收割了多少直男?

使用COLMAP初步三维重建
随机推荐
js正则表达式提取内容
从零开始配置 vim(7)——自动命令
如何治理资源浪费?百度云原生成本优化最佳实践
鲜花“刺客”收割七夕
rpm安装提示error: XXX: not an rpm package (or package manifest):
A Collection of Flutter Tutorials (2022 Edition)
【软考 系统架构设计师】软件架构设计② 软件架构风格
Tarjan 求有向图的强连通分量
Arduino框架下I2S控制ADC采样以及PWM输出示例解析
情人节浪漫3D照片墙【附源码】
Analysis and comparison of mobile cross-end technical solutions
String is a reference type
Small program on how to play in the construction of e-government service platform value
Just a Hook
项目里的各种配置,你都了解吗?
聚焦数据来源、数据质量和模型性能构建小微企业信用画像
为什么密码云服务平台是云时代的必然之选?
Neck modules of the yolo series
双目立体视觉笔记(二)
《会面》-凯瑟琳曼斯菲尔德(徐志摩译)










