本篇文章是在蓝桥杯嵌入式-LCD完整的项目下补充完成的。如果需要代码,直接看第四部分的下载链接。

注:PWM输出引脚的配置得为:TIMx_CHx
例如:这款开发板的PA6引脚可以选择TIM16_CH1或TIM3_CH1
在这里插入图片描述

一、STM32CubMX配置

定时器配置说明:配置引脚为
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、代码方面

外置占空比方法(PA1修改方法),用于十四届真题保持占空比不变。其他时候直接用PA6修改方法即可

2.1 main.c

2.1.1 修改位置

在这里插入图片描述

2.1.2 对应代码
  HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);//定时器和通道根据自己配置的引脚调整
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
  
  set_duty_PA6(50); //设置PA6输出占空比
  set_freq_PA6(2000); //设置PA6输出频率
  set_freq_PA1(2000); //外设占空比只需要上电设置频率即可,占空比改变只需改变变量duty_PA7的值,应用于占空比变化频繁的场景

2.2 task.c

2.2.1 修改位置

在这里插入图片描述
在这里插入图片描述

2.2.2 对应代码
float Duty_PA6; // PA6的占空比(显示设置变量值,与实际输出值情况无关)
void set_duty_PA6(float Duty)
{
    Duty_PA6 = Duty;
    TIM16->CCR1 = (TIM16->ARR + 1) * (Duty / 100.0f);
}

uint16_t Freq_PA6; // PA6的频率(Hz)(显示设置变量值,与实际输出值情况无关)
void set_freq_PA6(uint16_t Freq)
{
    Freq_PA6 = Freq;
    uint32_t arr_old = TIM16->ARR;
    TIM16->ARR = (1000000 / Freq) - 1; // 计算ARR值(定时器时钟为1MHz)80,000,000/(79+1) = 1,000,000
    // 根据新的ARR值调整CCR1,以保持占空比不变
    TIM16->CCR1 = (TIM16->ARR + 1) * (TIM16->CCR1 / (float)(arr_old + 1));
    TIM16->EGR = TIM_EGR_UG; // 产生更新事件,使新配置生效
}

float Duty_PA1 = 20;//PA1占空比调整修改此处
void set_duty_PA1(float Duty)
{
    TIM2->CCR2 = (TIM2->ARR + 1) * (Duty / 100.0f);
}

   
uint16_t Freq_PA1;
void set_freq_PA1(uint16_t Freq)
{
    Freq_PA1 = Freq;
    TIM2->ARR = (1000000 / Freq) - 1; // 计算ARR值(定时器时钟为1MHz)
    TIM2->CCR2 = (TIM2->ARR + 1) * (Duty_PA1 / 100.0f); // 设置占空比
    TIM2->EGR = TIM_EGR_UG; // 产生更新事件,使新配置生效
}


void lcd_proc()
{
	lcddisplay(Line2, " PA1 F:%d D:%.f",Freq_PA1,Duty_PA1);//不显示的位置用空格
	lcddisplay(Line3, " PA6 F:%d D:%.f",Freq_PA6,Duty_PA6);//不显示的位置用空格
}

2.3 task.h

2.3.1 修改位置

在这里插入图片描述

2.3.2 对应代码
void set_duty_PA6(float Duty);
void set_freq_PA6(uint16_t Freq);
void set_duty_PA1(float Duty);
void set_freq_PA1(uint16_t Freq);

三、其他

3.1 测量PA1

注:测量PA6把PA1引脚换到PA6即可,GND引脚不用改动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.2 完整代码下载

资料下载:https://pan.quark.cn/s/08f8e6116512

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐