IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于CubeMX-STM32F103RCT6_单通道单路PWM输出 -> 正文阅读

[嵌入式]基于CubeMX-STM32F103RCT6_单通道单路PWM输出

基于CubeMX-STM32F103RCT6_单通道单路PWM输出


简介

脉冲宽度调制模式可以产生一个由TIMx_ARR(自动重装载寄存器)寄存器确定频率、由TIMx_CCRx(捕获、比较寄存器)寄存器确定占空比的信号。
在TIMx_CCMRx(捕获、比较模式寄存器)寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须通过设置TIMx_CCMRx寄存器的OCxPE位使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位, (在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIMx_EGR寄存器中的UG位来初始化所有的寄存器。
OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP位设置,它可以设置为高电平有效或低电平有效。
OCx的输出使能通过(TIMx_CCER和TIMx_BDTR寄存器中)CCxE、 CCxNE、MOE、 OSSI和OSSR位的组合控制。详见TIMx_CCER寄存器的描述。
在PWM模式(模式1或模式2)下, TIMx_CNT和TIMx_CCRx始终在进行比较, (依据计数器的计数方向)以确定是否符合TIMx_CCRx≤TIMx_CNT或者TIMx_CNT≤TIMx_CCRx。根据TIMx_CR1寄存器中CMS位的状态,定时器能够产生边沿对齐的PWM信号或中央对齐的PWM信号。

CubeMX-TIM配置详情

在这里插入图片描述

功能模式选项
从模式1、禁用
2、外部时钟模式1
3、复位模式
4、门模式
5、触发模式
触发源1、禁用
2、ITR0
3、ITR1
4、ITR2
5、ITR3
6、ETR1
7、TI1_ED
8、TI1FP1
9、TI2FP2
时钟源1、禁用
2、内部时钟1
3、ETR2
通道11、禁用
2、输入捕获直接模式
3、输入捕获简介模式
4、输入捕获有TRC触发
5、输出比较无输出
6、输出比较通道1输出
7、输出比较通道1互补通道输出
8、输出比较通道1和通道1互补通道输出
9、PWM产生无输出
10、PWM产生通道1输出
11、PWM产生通道1互补通道输出
12、PWM产生通道1和通道1互补通道输出
13、通道1强制输出
14、通道1互补通道强制输出
15、通道1和通道1互补通道强制输出
通道2同通道1
通道3同通道1
通道41、禁用
2、输入捕获直接模式
3、输入捕获简介模式
4、输入捕获有TRC触发
5、输出比较无输出
6、输出比较通道4输出
7、PWM产生无输出
8、PWM产生通道4输出
9、通道4强制输出
联合通道1、禁用
2、编码器模式
3、PWM输入在通道1
4、PWM输入在通道2
5、异或和霍尔传感器模式
刹车输入功能
使用ETR作为清除源
异或功能
单脉冲模式

单通道单路 PWM 输出配置

在通道1选择 PWM generation CH1
在这里插入图片描述

参数设置

按如下截图配置:
在这里插入图片描述

主配置配置选项参数
计数器设置
预分频
计数模式1、向上
2、向下
3、中心对齐模式1
4、中心对齐模式2
4、中心对齐模式3
计数周期(自动重装载寄存器)
内部时钟分配1、0分频
2、2分频
3、4分频
重复计数器
自动重装载预加载
触发输出模式
主从模式1、禁用(触发输入效果不延迟)
2、使能(主从同步启动延迟触发)
触发事件选择1、复位(TIMx_EGR寄存器的UG位)
2、使能(CNT_EN)
3、更新事件
4、比较脉冲(OC1)
5、输出比较(OC1REF)
6、输出比较(OC2REF)
7、输出比较(OC3REF)
8、输出比较(OC4REF)
刹车和死区管理-刹车配置
刹车状态1、禁用
2、使能
刹车极性1、极性高
2、极性低
刹车和死区管理-输出配置
自动输出状态1、禁用
2、使能
运行模式的关闭状态选择(OSSR)1、禁用
2、使能
空闲模式下的关闭状态选择(OSSI)1、禁用
2、使能
锁定配置1、关闭
2、锁定等级1
3、锁定等级2
4、锁定等级3
PWM产生通道1
模式1、模式1
2、模式2
脉冲宽度
输出比较预加载1、禁用
2、使能
快速模式1、禁用
2、使能
通道极性1、极性高
2、极性低
通道空闲状态1、置位
2、复位

时钟配置

在这里插入图片描述

工程管理

在这里插入图片描述
在这里插入图片描述

最后点击界面右上角的 CREATE CODE(生产代码)

修改代码

在tim.c文件中的MX_TIM1_init() 函数中添加

HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//开始产生PWM信号

在这里插入图片描述

实现呼吸灯

在主函数中添加如下代码:

注意添加变量 uint32_t PluseWidch

//该函数在 stm32_hal_legacy.h 文件中
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,PluseWidch);//调节脉宽函数
while(PluseWidch<999)
	{
		PluseWidch++;
		__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,PluseWidch);
		HAL_Delay(1);
	}
	while(PluseWidch)
	{
		PluseWidch--;
		__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,PluseWidch);
		HAL_Delay(1);
	}

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:46:35  更:2022-03-22 20:46:51 
 
开发: 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:27:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码