蓝桥杯物联网竞赛_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啥东西也没接所以也就不知道啥效果有条件的可以用示波器测测

相关函数:

c 复制代码
    __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自动重装载被写入新值后,计数器完成前旧的计数后,再开始新周期

相关推荐
羽获飞4 分钟前
51单片机UART-串口通讯的配置方法
stm32·单片机·嵌入式硬件
猫猫的小茶馆7 分钟前
【Linux 驱动开发】一. 搭建开发环境
linux·汇编·arm开发·驱动开发·stm32·嵌入式硬件·mcu
猫猫的小茶馆29 分钟前
【Linux 驱动开发】嵌入式 Linux 开发概念
linux·服务器·arm开发·stm32·单片机·嵌入式硬件·mcu
兆龙电子单片机设计42 分钟前
【STM32项目开源】STM32单片机智能宠物喂养系统
stm32·单片机·开源·毕业设计·电子信息
Y1rong43 分钟前
STM32之串口(三)
stm32·单片机·嵌入式硬件
Y1rong1 小时前
STM32之串口(二)
stm32·单片机·嵌入式硬件
Y1rong1 小时前
STM32之串口(一)
网络·stm32·嵌入式硬件
旭意1 小时前
数据结构-红黑树和set
数据结构·c++·算法·蓝桥杯
想睡觉的树1 小时前
解决keil5编译慢的问题-亲测有效-飞一般的感觉
c语言·stm32·嵌入式硬件
__万波__1 小时前
STM32L475串口打印改为阻塞式打印兼DMA, 两种打印方式实时切换
stm32·单片机·嵌入式硬件