| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 手把手教你基于RT-Thread Studio 使用STM32单片机的PWM外设 -> 正文阅读 |
|
[嵌入式]手把手教你基于RT-Thread Studio 使用STM32单片机的PWM外设 |
一、使用说明目前我使用的是STM32L475系列单片机,是ali当时在PDD 50块钱卖的一个开发板,其他STM32单片机参考即可,这里会手把手教大家基于RTT Studio 来使用PWM。 二、创建工程1. 创建工程首先大家打开RT-Thread Studio 来基于单片机创建工程。点击左上角文件,新建 RT-Thread项目 2. 芯片参数设置选择基于芯片,下面的参数需要大家根据自己的主板来选择,我这个板子 使用LPUART作为CMD输出,单片机型号,下载器比如JLINK或者STLINK等等都需要自己适配开发板。 3. 下载设置创建项目完成后大家可以先编译后下载进开发板测试一下 CMD的输出。 4. 编译 下载大家在编译后就可以尝试下载。 三、修改时钟并配置串口在创建工程的时候,RT-Thread Studio 默认使用的是内部低俗时钟,我们需要更改到外部高速时钟来提高MCU工作性能,后面PWM 的时钟外设也使用的是外部高速时钟。 1. 打开CUBEMX双击工程中的CUBEMX图标,可以打开cubemx,如果没有安装请自行安装。 2. 打开高速时钟打开CUBEmx的 System Core,选择RCC配置,将HSE与LSE均设置为Crystal/Ceramic Resonator,然后点击左上角文件保存。 3. 配置时钟树打开 Clock Configuration 4. 打开LPUART因为在创建工程时,默认打开了LPUART,但是使用cubemx获取代码后,LPUART是关闭的,我们需要重新打开LPUART。 首先在右侧选择 PB10与PB11 为LPUART外设,然后在左侧 Connectivity -LPUART外设中将Mode选择为Asynchronous 模式,就已经成功打开了。 5. 获取代码首先点击左上角文件 选择Save Project,然后点击右上角 Generate Code,代码获取完成后就可以关闭CubeMX了。 6. 修改时钟定义刚才Cubemx已经帮我们生成了时钟代码,但是代码需要我们手动加入到 BSP中,找到cubemx 里的src 然后打开main.c文件。 7. 编译下载这时候时钟已经修改完成了,可以编译下载应该是没有错误的。
将这句代码替换掉上面的 FINSH_FUNCTION_EXPORT_ALIAS 即可。 四、配置PWM1. 使能PWM首先打开RT-Thread Settings 打开PWM驱动。 选择组件,设备驱动程序,使能PWM,然后点击左上角保存。 2. 配置时钟配置时钟我们仍然需要使用CUBEMX工具,我目前要使用的PWM是A0引脚,将A0设置为TIM2的通道1 然后选择Timers 的TIM2 将通道1 设置为 比较输出模式。然后点击左上角保存,右上角获取代码。 3. 修改驱动这时候 CUBEMX已经帮我们生成了需要使用的代码,我们还需要将它修改到BSP里。
4. 修改调用打开drivers 里的 drv_pwm.c 找到 stm32_hw_pwm_init这个函数,在TIM初始化之前初始化以下时钟引脚。
5. 配置PWM通道这时候PWM的驱动就已经做好了,打开board.h ,打开需要使用的PWM通道
6. 保存编译这时候我们需要使用的驱动已经全部构建完成了,接下来就使用RT-Thread的接口来完成用户代码吧。 五、用户代码1. 新建一个.c文件来存放用户代码,名字随便起,我放在了applications里,文件格式一定要加.c2. PWM相关API1. 查找设备
这个API会返回设备句柄 2. 设置PWM参数
*struct rt_device_pwm device PWM设备句柄 int channel PWM通道数 rt_uint32_t period PWM周期,单位ns rt_uint32_t pulse PWM脉冲宽度,单位ns 如果设置成功,会返回RT_EOK, 频率= 1000000000/period 3. 使能PWM通道
*struct rt_device_pwm device 这是设备句柄 int channel PWM通道数 如果使能正常的话会返回RT_EOK,其他错误就是使能失败。 3. PWM用户Demo
代码注释基本上已经写清楚啦,我用的是TIM2的通道1,就是pwm2的通道1,大家可以参考这个Demo。 4. 命令行调用完成了代码,我们编译下载进单片机,打开命令行 输入help命令,可以将main中的log日志代码删除掉,不然会一直弹 Hello RT-Thread 可以看到help 显示的命令, pwm_test就是我们刚才用户代码的命令, 输入命令后LOG会提示 PWM Init is ok 然后我用逻辑分析仪抓一下 PWM波形,应该是50%占空比。 六、总结RT-Thread的驱动代码框架用起来非常简单,比标准库开发起来好用很多,外设学习完就继续学习内核,手把手系列教程也会继续更新呦。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:33:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |