一、初始化GPIO
使用PB1,查芯片手册对应TIM3_CH4- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
-
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
- GPIO_Init(GPIOB, &GPIO_InitStructure);
二、初始化TIM和PWM
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
-
- /* 周期1000 */
- TIM_TimeBaseStructure.TIM_Period = 999;
- /* 定时器时间间隔1微秒 */
- TIM_TimeBaseStructure.TIM_Prescaler = 0;
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- /* 向上计数 */
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- /* 配置 */
- TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
-
- /* 选择PWM1模式 */
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- /* 允许输出模式 */
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- /* 匹配值 */
- TIM_OCInitStructure.TIM_Pulse = 1000;
- /* 设置小于匹配值时为高电平 */
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- /* 使能通道1 */
- TIM_OC4Init(TIM3, &TIM_OCInitStructure);
-
- TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
- TIM_ARRPreloadConfig(TIM3, ENABLE);
- TIM_Cmd(TIM3, ENABLE);
三、main函数部分
通过修改CCRx寄存器,改变占空比。从而调整电流大小- while(1)
- {
- if(CCR3_Val >=0 && CCR3_Val <= 1000)
- {
- CCR3_Val -= 50;
- Delay(1);
- }
- else
- {
- CCR3_Val = 1000;
- Delay(1);
- }
- TIM3->CCR4 = CCR3_Val;
- Delay(1);
- }
给主人留下些什么吧!~~
评论热议