【STM32HAL库】定时器输出比较PWM-呼吸灯实验
- 开发
- 30
-
void TIM_GENERAL_INIT(uint16_t psc,uint16_t arr)
{
TIM_OC_InitTypeDef sConfig;
htim3.Instance = TIM3;
htim6.Init.Prescaler = psc;
htim3.Init.Period = arr;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_PWM_Init(&htim3);
sConfig.OCMode = TIM_OCMODE_PWM1;//PWM模式
sConfig.Pulse = 0;//CRR
sConfig.OCPolarity = TIM_OCPOLARITY_LOW;//输出极性
/*
sConfig.OCNPolarity =
sConfig.OCFastMode =
sConfig.OCIdleState =
sConfig.OCNIdleState =
这些不需要
*/
HAL_TIM_PWM_ConfigChannel(&htim3,&sConfig,TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
}
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM3)
{
__HAL_RCC_TIM3_CLK_ENABLE();
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_AFIO_REMAP_TIM3_PARTIAL();
GPIO_InitTypeDef GPIO_Init;
GPIO_Init.Pin = GPIO_PIN_5;
GPIO_Init.Mode=GPIO_MODE_AF_PP;
//GPIO_Init.Pull = GPIO_PULLDOWN;
GPIO_Init.Speed=GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&GPIO_Init);
}
}
uint32_t time;
int main(void)
{
HAL_Init(); /* 初始化HAL库 */
sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
delay_init(72); /* 延时初始化 */
LED_Init(); /* LED初始化 */
KEY_Init();
EXTI_Init();
USART_Init(115200);
//TIM_BASIC_INIT(7200-1,5000-1);
TIM_GENERAL_INIT(72-1,500-1);
while(1)
{
for(time=0;time<500;time++)
{
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,time);//CRR的值
delay_ms(1);
}
for(time=500;time>0;time--)
{
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,time);
delay_ms(1);
}
}
}
原文地址:https://blog.csdn.net/2301_79330491/article/details/138047620
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:https://www.suanlizi.com/kf/1782077347160264704.html
如若内容造成侵权/违法违规/事实不符,请联系《酸梨子》网邮箱:1419361763@qq.com进行投诉反馈,一经查实,立即删除!