2.4设置好后导出文件并在开。
三、编程
3.1 main.c函数中开启定时器(
tiM1 TIM3 TIM4)
/* USER CODE BEGIN 2 */
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_2); //启动TIM1互补通道(注意启动互补型输出区别)
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2); //启动TIM4通道
/* USER CODE END 2 */
这样就LD1 LD2 LD3小灯都开始闪烁了。
3.2
STM32f4xx_it.c中设置按键中断
/* USER CODE BEGIN 0 */
#include "tim.h"
int PWM_Per =10;
int HZ=1599;
/* USER CODE END 0 */
/* USER CODE BEGIN EXTI15_10_IRQn 1 */
if( HAL_GPIO_ReadPin(B1_GPIO_Port,B1_Pin)==GPIO_PIN_SET)
{
__HAL_TIM_SetAutoreload(&htim3,HZ); //改变LD1频率由10Hz改成100Hz
__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_3,PWM_Per*10); //频率改变为100,LD1占空比放大10倍。
__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_2,PWM_Per); //改变LD2占空比。
__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,PWM_Per); //改变LD3占空比。
if(PWM_Per>100)
{
PWM_Per=10;
HZ=15999;
}else
{
PWM_Per=PWM_Per+10;
}
}
/* USER CODE END EXTI15_10_IRQn 1 */
3.2 设置好后按一下LD2 LD3的占空比就变化了,每次都加10% 而LD1频率从10HZ变成100HZ
四、问题
不知道为什么,用
仿真时在Keil的逻辑分析中一直输入不了对应的端口,看不到PWM波形。