STM32G431RBT6----pww(12届省赛补充)

目录


一、12届省赛pwm题目要求

 

 

 

 

 二、相关概念

 pwm实际上是输出功能,输出功能还是通过引脚来实现,利用引脚的复用功能,实现引脚的配置,从而实现pwn输出功能

我们的台灯就是通过调节占空比实现暗-亮-较亮的调节

2.定时器timer有没有pwm输出功能,参考《参考手册》

如此查询可知28、29、30章的timer都支持pwm输出功能

三、CubeMX配置

1.检查某个定时器是否支持pwm输出功能?

如果有channel的话表示支持PWM输出功能

2.对引脚PA7进行配置(题目要求)

 一个timer可能有很多通道支持pwm输出,可以根据自己平时练习选一个通道(我选的是timer3的通道2)

3.配置所选定时器的时钟和对应通道的功能

 4.分频

 5.配置占空比

在分频的时候counter period是一个周期计数500

 6.相关参数解释

1.

2、

 

3、

 

 pwm1和pwm2的区别:

在进行PWM信号输出时,有两种PWM模式:PWM1模式和PWM2模式。
这两种PWM模式和输出有效电平的极性共同决定了PWM信号的波形。
PWM1模式
递增计数时,当TIMx_CNT(计数值)< TIMx_CCR(捕获/比较值)时,输出为有效电平,否则为无效电平。递减计数模式则刚好相反。
PWM2模式
递增计数时,当TIMx_CNT(计数值)< TIMx_CCR(捕获/比较值)时,输出为无效电平,否则为有效电平。递减计数模式则刚好相反。

4、

 

5、占空比就相当于平均输出高电平20%,实验结果如下(平均输出专业术语就是pwm输出)

 四、代码

1、CubeMX自动生成的代码

2、设置变量

 3、根据题目要求B4按键的共能,更新按键函数

//Key processing function
void Key_Proc(void)
{
	uint8_t cur_key = 0;
	
	cur_key = Key_Scan();
	
	switch(cur_key)
	{
		case 1:
			Show_Flag++;
			if(Show_Flag == 3)
				Show_Flag = 1;
			Update_Flag = 1;
			break;
		case 2:
			if(Show_Flag == 2)
			{
				CNBR_Price += 0.5f;
				VNBR_Price += 0.5f;
				Update_Flag = 1;				
			}
			break;
		case 3:
			if(Show_Flag == 2)
			{
				CNBR_Price -= 0.5f;
				VNBR_Price -= 0.5f;
				if(CNBR_Price < 0)
					CNBR_Price = 0.0f;
				if(VNBR_Price < 0)
					VNBR_Price = 0.0f;			
				Update_Flag = 1;
			}
			break;
		case 4:
			PWM_Flag ^=1;//yihuo 0/1
			break;		
		default:
			;
	}
}

 4、LED函数

void Led_Proc(void)
{
	if(IDEL_Size > 0)
		LED_Ctrl(LED1, ON);
	else
		LED_Ctrl(LED1, OFF);
	
	if(PWM_Flag==1)
		LED_Ctrl(LED2,ON);
	else
		LED_Ctrl(LED2,OFF);
}

 5.1、PWM函数

void PWM_Proc(void )
{
	if(PWM_Flag==0)
	{
		HAL_TIM_PWM_Stop(&htim3 ,TIM_CHANNEL_2 );
		HAL_Delay(5);
	}
	else 
	{
		HAL_TIM_PWM_Start(&htim3 ,TIM_CHANNEL_2 );
		HAL_Delay(5);
	}
}

 5.2、timer定时器通道相关函数学习

HAL_TIM_PWM_Start(&htim3 ,TIM_CHANNEL_2 );

当有按键按下的时候,开启timer3的2通道的PWM输出

HAL_TIM_PWM_Stop(&htim3 ,TIM_CHANNEL_2 );

当有按键按下的时候,关闭timer3的2通道的PWM输出

注:__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,250) 是专门用来设置占空比的函数,这样就是占空比为250/500=50%

 6、主函数和函数声明

五、实验结果

通过控制B4能够实现LED2的亮灭

串口部分的结果问题:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值