当前位置:网站首页>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
文件中外设的初始化函数。
参考链接:
边栏推荐
猜你喜欢
Small program on how to play in the construction of e-government service platform value
CLS-PEG-DBCO,胆固醇-聚乙二醇-二苯基环辛炔,可用于改善循环时间
What is DevOps?Enough to read this one!
MySQL-数据类型
做项目管理有且有必要了解并学习的重要知识--PMP项目管理
集群监控——Zabbix
Arduino框架下I2S控制ADC采样以及PWM输出示例解析
推荐一款优秀的通用管理后台
RK1126编译gdb 板子上gdb调试程序
【自动微分实现】反向OO实现自动微分(Pytroch核心机制)
随机推荐
从零开始配置 vim(7)——自动命令
Valentine's Day Romantic 3D Photo Wall [with source code]
Small program on how to play in the construction of e-government service platform value
接到“网站动态换主题”的需求,我是如何踩坑的
什么是 DevOps?看这一篇就够了!
持续交付(四)Jenkins多线程任务执行
Do you understand the various configurations in the project?
使用COLMAP初步三维重建
常用代码模板1——基础语法
break与continue超详解!!!
手搓一个“七夕限定”,用3D Engine 5分钟实现烟花绽放效果
Haproxy搭建web群集
拥有一台服务器,程序猿装X的开始
获取本机IP地址的脚本
Oracle 19c 单实例 19.3.0 升级到19.11.0 详细教程
Flutter教程大全合集(2022年版)
FHQ-Treap 简介
【VSCode】一文详解vscode下安装vim后无法使用Ctrl+CV复制粘贴 使用Vim插件的配置记录
Cache character stream
永磁同步电机FOC驱动代码讲解