本文主要是介绍蓝桥杯物联网竞赛_STM32L071_19_输出方波信号(PWM),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
国赛考了一个方波,第一次考这个,连个示波器都没有
CUBMX配置:
按上述配置刚好是32MHZ / 32 / 100 = 1KHZ
理论:
频率:就是一秒钟能产生多少个脉冲,如下图:
这算是一个脉冲,1KHZ说明一秒钟产生1000个这样的脉冲,频率越大,单位时间产生的脉冲越多,等效成的模拟信号量自然就越平稳,例如2HZ也就是一秒俩脉冲,前0.5秒憋出一个脉冲自然就不流畅
占空比:指一个脉冲中高电平占整个脉冲的份额
占空比高,自然高电平占的份额多,模拟电压也就高
分辨率:分辨率就是占空比的最小变化量
例子:
假设我设置上述的PULSE = 50,也就是设置了脉冲宽度
为50,何为脉冲宽度呢,朴素的讲就是一个脉冲中高电平占的时间
上述已经设置了自动重装载
值即一个脉冲占的时间为100(准确来说是1 / 1M * 100秒)
脉冲宽度为50(准确说1 / 1M * 50秒)
占空比
就是:脉冲宽度 / 自动重装在 * 100% = 50%
脉冲宽度最小一次 + 1也就是由50变成51那么分辨率
就是1 / 100 * 100 % = 1%
频率
就是1 / (1 / 1M * 100) = 10000HZ也就是1KHZ
Keil5配置:
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
初始化一下就输出方波了,由于没有示波器且这个PA0啥东西也没接所以也就不知道啥效果有条件的可以用示波器测测
相关函数:
__HAL_TIM_SET_PRESCALER(&htim2, 32 - 1); // 修改预分频为__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 50); // 修改脉冲宽度__HAL_TIM_SET_AUTORELOAD(&htim2, 100 - 1); // 修改自动重装载
有了上述函数就可以调频率,占空比,分辨率的值了
补充:
auto-reload preload=disable
这个函数我一直以为是计数器记满后让其归零,重新记录,但是我查阅资料好像不是
设为DISABLE时是当你修改自动重装载的值后,计数器立即产生计数溢出,然后重新计数
反之ENABLE自动重装载被写入新值后,计数器完成前旧的计数后,再开始新周期
这篇关于蓝桥杯物联网竞赛_STM32L071_19_输出方波信号(PWM)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!