蓝桥杯物联网竞赛_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自动重装载被写入新值后,计数器完成前旧的计数后,再开始新周期

相关推荐
时序数据说19 分钟前
时序数据库市场前景分析
大数据·数据库·物联网·开源·时序数据库
点灯小铭9 小时前
基于STM32单片机智能RFID刷卡汽车位锁桩设计
stm32·单片机·汽车·毕业设计·课程设计
TDengine (老段)9 小时前
TDengine IDMP 高级功能(4. 元素引用)
大数据·数据库·人工智能·物联网·数据分析·时序数据库·tdengine
bai54593610 小时前
STM32 软件I2C读写MPU6050
stm32·单片机·嵌入式硬件
David WangYang15 小时前
基于 IOT 的安全系统,带有使用 ESP8266 的语音消息
物联网·安全·语音识别
竹照煜_ysn17 小时前
STM32——软硬件I2C
stm32·嵌入式硬件·mongodb
Wallace Zhang18 小时前
STM32 - Embedded IDE - GCC - 显著减少固件的体积
stm32·单片机·嵌入式硬件
fengfuyao9851 天前
STM32如何定位HardFault错误,一种实用方法
stm32·单片机·嵌入式硬件
keer_zu1 天前
STM32L051 RTC闹钟配置详解
stm32·嵌入式硬件
AI精钢1 天前
H20芯片与中国的科技自立:一场隐形的博弈
人工智能·科技·stm32·单片机·物联网