当前位置: 首页 > news >正文

嵌入式蓝桥杯学习7 产生PWM

Cubemx配置

打开cubemx,前面的配置看上文,这里主要配置定时器产生PWM波。

以PA1的TIM2-CH2通道为例进行演示。

1.在Timers中打开TIM2,将Channel2配置为PWM Generation CH2。

2.将Clock Source 选择为Internal Clock。

3.配置Paramater Settings中的参数。

Prescalar(PSC)预分频:80-1

counter Mode(计数模式):Up

counter period(计数器的值):1000-1

Internal Clock Division(CKD)时钟分频因子:No Division

auto-reload preload(自动重装载值):Enable(使能)

4.配置PWM Generation Channel 2中的参数。

 Mode(模式):PWM mode 1

Pulse:400(设置占空比为40%,如果要换别的占空比,可自行修改)

Output compare preload:Enable

CH Polarity:High


点击GENERATE CODE.  

代码编写

知识补充

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
功能:是启动定时器 htim2 的脉宽调制(PWM)功能,并且具体是对 TIM_CHANNEL_2 这个通道来启动的。这意味着定时器 htim2 的通道 2 将会按照预先配置好的参数(比如频率、占空比等设置,这些设置一般是在初始化定时器时就完成了的)开始输出 PWM 信号了。

__HAL_TIM_SET_AUTORELOAD(&htim2,250);
功能:用于设置定时器 htim2 的自动重装载值,在这里将自动重装载值设置为 250,也就意味着定时器 htim2 的计数范围被限定在了 0 到 250 这个区间。

__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,100);
功能:用于设置定时器 htim2 中指定通道(这里是 TIM_CHANNEL_2)的比较值。定时器的计数值会和这个比较值进行比较,当计数值小于比较值时,输出通道对应的电平状态(比如高电平)会保持,而当计数值达到或者超过比较值时,电平状态会发生改变(比如变为低电平),通过改变这个比较值就可以改变 PWM 信号的占空比。这里将比较值设置为 100,结合前面设置的自动重装载值 250,可以大致算出当前 PWM 信号在一个周期内高电平所占的时长比例(即占空比,这里大致为 100/250),从而实现对输出信号占空比的控制。

代码

示例:设置输出频率为4KHz,占空比40%。

my_main.c

#include "my_main.h"
char text[30];
void LED_Disp(uint8_t dsLED)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);//所有LED熄灭(l小写)HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);//左移8位:控制C8-15引脚,值为1的点亮HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//开锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关锁存器
}
void setup()
{HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);LED_Disp(0x00);//关掉所有LEDLCD_Init();//LCD初始化LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);
}
void loop()
{if(bkey[1].short_flag==1){sprintf(text,"    KEY_1 down!    ");LCD_DisplayStringLine(Line8,(uint8_t *)text);//局部刷新	__HAL_TIM_SET_AUTORELOAD(&htim2,250);__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,100);bkey[1].short_flag=0;}
}

按键函数在上一篇有提到,详情请移位上篇文章。
                        
原文链接:https://blog.csdn.net/m0_74246768/article/details/144298243

http://www.lryc.cn/news/499502.html

相关文章:

  • 档案学实物
  • 数据清洗代码:缺失值,异常值,离群值Matlab处理
  • Windows设备go环境安装配置
  • 导体、半导体和绝缘体
  • shell 6 if条件判断与for循环结构 (泷羽sec)
  • MetaGPT 安装
  • 论文阅读:Single-cell transcriptomics of 20 mouse organs creates a Tabula Muris
  • 图生3d 图生全景 学习笔记
  • 分库分表—4.数据迁移系统文档
  • HAMR技术进入云存储市场!
  • Vulnhub---kioptirx5 超详细wp
  • 单片机状态机实现多个按键同时检测单击、多击、长按等操作
  • oracle之用户的相关操作
  • 黑马redis
  • HCIA-Access V2.5_1_2 PON技术的特点、优势与典型应用
  • css部分
  • 【TCP 网络通信(发送端 + 接收端)实例 —— Python】
  • LSTM+改进的itransformer时间序列预测模型代码
  • Apache-HertzBeat 开源监控默认口令登录
  • Delete Number
  • Linux常用快捷键
  • 针对xpath局限的解决方案
  • 深入解析 HTML Input 元素:构建交互性表单的核心
  • ffmpeg转码与加水印
  • Leetcode 104. 二叉树的最大深度(Java-深度遍历)
  • 阳明心学-传习录学习总结
  • macOS sequoia 15.1中应用程序“程序坞”没有权限打开
  • 使用 MinIO 和 KKFileView 实现在线文件预览功能
  • Conda-Pack打包:高效管理Python环境
  • 云服务器上搭建 WordPress 全流程指南