这边选择TIM2来做,首先进到.ioc当中先确认系统时钟频率为多少,这边我的是16Mhz
接着点选左侧的Timer选择TIM2进行PWM的设置,在Channel 1的地方选择PWM Generation CH1,同时CH_1的接脚为PA0。
接着可以看到下方的配置部分,Prescaler与auto-reload preload(ARR)在前几篇Timer有介绍过,Prescaler设置为15 ARR设置为5000会得到200Hz的PWM方波,Pulse设置为3750会得到占空比75%,要注意这边选择模式1,高电位会在CNT小於Pluse时产生。
//第一个参数为定时器
//第二个参数为通道
HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
//EX
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
//将TIM3的ARR值改为1000
//第一个参数为定时器
//第二个参数为要修改的值
__HAL_TIM_SET_AUTORELOAD(&htim3, 1000);
//将TIM3的Pulse值改为1000
//第一个参数为定时器
//第二个参数为输出通道
//第三个参数为要修改的值
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,1000);
由於手边没有马达可以做测试,这边就先使用PWM来输出LED~
假设以1Hz的频率去输出LED灯,那也就代表1秒当中0.5为亮灯0.5会熄灯,这时会看到LED是闪烁的状况。
以200Hz的频率去输出LED灯,5ms当中暗与亮各占一半,这时因为频率太快导致看起来只有亮度减少。
所以在频率相同时改变占空比可以改变LED的亮度达到呼吸灯的效果。
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
for(x=0;x<=4999;x++) //从最暗到最亮
{
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,x);
HAL_Delay(5); //方便观察LED灯明暗变化
}
for(x=4999;x>=0;x--) //从最亮到最暗
{
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,x);
HAL_Delay(5);
}
}
/* USER CODE END 3 */
<<: 【原创】自制资料库管理工具 - JasonQuery
>>: Python & Celery 学习笔记_周期任务 (Beat)
如何处理定期的需求 相信很多人会遇到需要定期做某些事情的状况,例如每分钟去计算一次资料,或者一分钟跟...
什麽是K平均演算法? 讲人话就是从所有资料当中乱数选择K个中心点,把个别资料依照最近的中心点分成K群...
Terraform 前言 今天介绍一下可以快速建立GCP各服务的套件Terraform,那麽Terr...
float称为浮动元素,可以想像是加上这个元素的物体都会飘浮在空中 接下来示范一些用法来认识这个元素...
今天来说说如何在html中产生一个表格,我们需要用到table这个语法,table的用法如下 tab...