STM32移植RT-Thread实现PWM波的输出

news2024/11/27 10:35:30
在进行PWM波的学习中,依然是踩了小坑,网络上大部分配置都增加了TIM的配置,貌似是不需要的,当开启了TIM的时钟反而影响了PWM的时钟,暂且归咎于版本不一样?还是STM32F1和STM32F4不一样呢?核心问题还是,按部就班完成几样配置,最后翻看一下时钟是否有效开启即可。

1.打开RT-Thread Setting中PWM的驱动

在这里插入图片描述

2.进行HAL库的配置

HAL库的配置必须要做的 SYS/RCC/USART 然后在配置个TIM的PWM输出
在这里插入图片描述
这里的Clock Source并没有开启,因为开启后发现stm32f1xx_hal_msp.c中只有HAL_TIM_MspInit而没有HAL_TIM_PWM_MspInit,感觉很奇怪,不知道F4或者其他芯片什么样,网络上里面有开启的有没开启的,我觉得可能是实时操作系统版本的问题,大家可以关注一下时钟是否开启了。

3.开启board.h里面的宏定义

在这里插入图片描述
HAL库中配置的哪个就在这里开启哪个

4.打开stm32f1xx_hal_conf_bak.h的PWM的宏定义

在这里插入图片描述

5.代码

#include <rtthread.h>
#include <rtdevice.h>
#include <rtdbg.h>
#include "stm32f1xx_hal.h"
#include "main.h"



#define PWM_DEV_NAME        "pwm2"  //PWM设备名称
#define PWM_DEV_CHANNEL     1       //PWM通道

struct rt_device_pwm *pwm_dev;      //PWM设备句柄



int main(void)
{
    rt_uint32_t period, pulse, dir;

    period = 500000;    //周期为0.5ms,单位为纳秒ns
    dir = 1;            //PWM脉冲宽度值的增减方向
    pulse = 250000;          //PWM脉冲宽度值,单位为纳秒ns


    //查找设备
    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
    if (pwm_dev == RT_NULL)
    {
        rt_kprintf("pwm sample run failed! can't find %s device!\n", PWM_DEV_NAME);
        return RT_ERROR;
    }

    //设置PWM周期和脉冲宽度默认值
    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
    //使能设备
    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);

    while (1)
    {

    };
}

最后

RTT基本所有外设配置都是差不多的,按部就班配置即可,PWM这里遇到的问题就是,开启了Clock Source后,打开的时钟只是TIM的而没有PWM的,暂时归咎于版本问题吧,或者我们可以调用HAL库的初始化,这样是不是手动开启了时钟呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存

【黑马点评优化】之使用CaffeineRedis实现应用级二层缓存 1 缓存雪崩定义及解决方案2 为什么要使用多级缓存3 RedisCaffeine实现应用层二级缓存原理4 利用CaffeineRedis解决Redis突然宕机导致的缓存雪崩问题4.1 pom.xml文件引入相关依赖4.2 本地缓存配置类4.3 修改ShopServiceI…

Blazor Web APP学习记录

目录 1 呈现模式1.1 静态SSR1.2 服务器端交互SSR1.3 客户端交互CSR1.4 自动交互式1.5 注意 2 Blazor Web APP项目3 会话状态 1 呈现模式 参见&#xff1a;https://learn.microsoft.com/zh-cn/aspnet/core/blazor/components/render-modes?viewaspnetcore-8.0 Blazor Web App …

torch-npu的配置

1、简单的调用npu import torch import torch_npu x torch.randn(10000, 10000).npu() y torch.randn(10000, 10000).npu() for _ in range(10000):z x.mm(y) 这个代码的出现就会导致&#xff0c;核心使用99%&#xff0c;显存| 1633 2、安装torch-npu 安装方法看官网介绍…

npm使用时报错:Could not retrieve https://npm.taobao.org/mirrors/node/index.json.

在使用npm时报错&#xff0c;报错信息如下&#xff1a; 报错的原因&#xff1a;是原来的淘宝镜像地址过期了 解决办法&#xff1a;修改镜像地址。打开nvm的安装地址 -->settings.txt文件 -->配置下载源 1、将settings.txt文件中的 node_mirror: https://npm.taobao.or…

机器学习可解释性

机器学习的稳健性、可解释性和结果正确性等是人工智能安全可信应用必须解决的关键问题。 传统机器学习&#xff1a; 内置可解释性&#xff1a;决策树IF-Then规则&#xff0c;直观可理解事后可解释性&#xff1a;训练结束后的可解释技术特定于模型体系结构的解释与解释方法及模…

删除 Word 空白页的 3 种方法总结

在使用 Word 进行文档编辑的时候&#xff0c;空白页的出现常常会让用户感到困扰&#xff0c;Word 空白页的出现可能是由于分页、段落设置以及格式问题&#xff0c;空白页可能会出现在文档的开始、中间及结尾&#xff0c;如果需要打印文档还会影响打印效果&#xff0c;那么 Word…

【论文#性能对比】Video coding with H.264/AVC: Tools, Performance, and Complexity

目录 摘要1.前言2.标准化视频编码方案的概念3. H.264/AVC 编码方案3.1 帧内预测3.2 运动补偿预测3.3 变换编码3.4 熵编码方案3.5 自适应去块滤波器3.6 错误鲁棒性和网络友好性 4.码率受限的编码器控制5. H.264/AVC 的配置文件和级别6.与先前标准的比较6.1 编码效率6.2 硬件复杂…

如何启动一个OpenSearch

创建两个集群&#xff0c;标注 不含备用节点 选择集群版本和配置集群版本 冷热存储和专用主节点这个按需开启 然后是网络&#xff0c;是否使用自定义域名&#xff0c;集群开在VPC还是公网上。 选择是否开启认证&#xff1a; 访问策略&#xff0c;其实就是资源策略 维护时段…

vue页面使用v-print指令打印表格表单的几种方法,包括页眉标题自定义设置

页面效果: 打印预览页面: 步骤: 1.安装vue-print-nb 2.在main.js里面注册 import Print from vue-print-nbVue.use(Print) 3.在页面.vue代码中定义打印范围和打印按钮&#xff0c;我这里是以id"main-div"这个div为范围进行打印 <div> <div id"main-d…

grs认证有什么好处?grs认证相关政策

GRS认证&#xff08;Global Recycled Standard&#xff09;即全球回收标准认证&#xff0c;是一项国际、自愿和全面的产品标准&#xff0c;主要针对回收材料的使用和供应链进行认证。GRS认证能够为企业带来多方面的好处&#xff0c;以下是对这些好处的详细归纳&#xff1a; 一…

【livox雷达】HAP雷达 红外 orin 交换机 ——办公室 硬件搭配

orin&#xff1a;拉一根网线&#xff0c;一端连orin&#xff0c;一端连交换机 雷达&#xff1a;接上电源&#xff0c;另一端连接交换机 红外&#xff1a;用gsml方式连到orin上 交换机&#xff1a;以交换机为中心&#xff0c;连一根网线到orin&#xff0c;一根接外网的网线连给…

CesiumLab介绍

软考鸭小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 CesiumLab是一个围绕Cesium平台设计的完整易用的数据预处理工具集&#xff0c;它旨在最大化提升三维数据可视化效率。本文将详细介绍CesiumLab的安装、主要功能…

2-119 基于matlab的合成孔径雷达(SAR)RDA(距离多普勒算法)、RMA(距离徙动算法)、CSA(线性调频变标算法)算法点目标成像与分析

基于matlab的合成孔径雷达(SAR)RDA(距离多普勒算法)、RMA(距离徙动算法)、CSA(线性调频变标算法)算法点目标成像与分析&#xff0c;RDA算法通过参考目标的多普勒历程完成对应匹配滤波器设计&#xff0c;获得同距离处不同目标相对于参考目标的方位位置。RMA是一种高分辨率的频域…

阿里测试之道-测试团队的发展之路

一、测试团队的发展之路 1.1、测试团队面临的困局 测试团队面临着不少的苦难&#xff0c;其中具有普遍性的有&#xff1a; 测试自动化难&#xff1a; 自动化测试程序编写成本高、执行时间长、维护成本高。测试的”技术债“在业务高速发展的过程中越积越多&#xff1a;一边修复…

ubuntu-24.04.1 系统安装

使用VMware虚拟机上进行实现 官网下载地址&#xff1a; https://cn.ubuntu.com/download https://releases.ubuntu.com 操作系统手册&#xff1a; https://ubuntu.com/server/docs/ &#xff08;里面包含安装文档&#xff09; 安装指南&#xff08;详细&#xff09;&#xff1a…

B3622 枚举子集

1. 注意dfs内&#xff0c;for循环的遍历&#xff0c;想清楚把什么赋值给a[x] 2.本题只需要把0或1赋值给a[x]所以 #include<bits/stdc.h> using namespace std; int n; int a[20]; int vis[20]; void pr() {for (int i 1; i < n; i) {if (a[i] 0)cout << N;els…

珀丽达医用敷料:滋养冰爽夏日三伏

虽然已经立秋&#xff0c;但是热浪高温一直都还在滚滚而来。“三伏天”、“秋老虎”&#xff0c;真的叫做“伏天伏地&#xff0c;热似火&#xff0c;不付不行”。盯着烈日灼晒&#xff0c;经历了一天工作与奔波的你&#xff0c;是否渴望一抹清凉&#xff1f;特别是爱美的女生&a…

[Linux]从零开始的网站内网穿透教程

一、前言 在上一次教程中&#xff0c;我们教了大家如何搭建一个网站并且在内网中能被访问到。这样也出现了一个问题&#xff0c;我们的网站被我们部署得再好看&#xff0c;始终只有内网中的设备可以访问。如果别人和我们不在一个局域网中&#xff0c;就无法访问我们搭建的网站了…

Allegro在PCB上开槽的三种方法操作指导

Allegro如何在PCB上开槽的三种方法操作指导 当PCB有特殊设计要求的时候&#xff0c;需要在PCB上开槽&#xff0c;Allegro支持在PCB上开槽操作&#xff0c;具体操作如下 以下图为例&#xff0c;需要在这个板框中间开槽 开方形槽 选择shape add rect命令 画在Board Geometry-o…

最新PHP礼品卡回收商城 点卡回收系统源码_附教程

最新PHP礼品卡回收商城 点卡回收系统源码_附教程 各大电商平台优惠券秒杀拼团限时折扣回收商城带余额宝 1、余额宝理财 2、回收、提现、充值、新订单语音消息提醒功能 3、带在线客服 4、优惠券回收功能 源码下载&#xff1a;https://download.csdn.net/download/m0_66047…