OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2622|回复: 2

老哥们,我做了一个呼吸灯,用的是PB8 对应的是TIM4 CH3,但是只是实现了闪烁的效果,亮度并没有发生改变。求指教

[复制链接]

10

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-7-3
在线时间
18 小时
发表于 2020-4-22 10:54:35 | 显示全部楼层 |阅读模式
1金钱
板子是STM32F103C8T6


u16 ledOpwmval;
int main(void)
{       

    u8 dir=1;
    delay_init();
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    uart_init(115200);
    Init_LEDpin();
    TIM4_Int_Init(7999,8999);
    while(1)
    {
        delay_ms(10);
        if(dir == 1) ledOpwmval++;
        else ledOpwmval--;

        if(ledOpwmval>3999) dir = 0;
        if(ledOpwmval==0) dir = 1;
        TIM_SetCompare3(TIM4,ledOpwmval);
    }
}



void TIM4_Int_Init(u16 arr,u16 psc)
{   
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
    NVIC_InitTypeDef NVIC_InitStructture;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);

    TIM_TimeBaseInitStrue.TIM_Period = arr;
    TIM_TimeBaseInitStrue.TIM_Prescaler = psc;
    TIM_TimeBaseInitStrue.TIM_CounterMode =TIM_CounterMode_Up;
    TIM_TimeBaseInitStrue.TIM_ClockDivision =0;
    TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStrue);  

    TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);

    NVIC_InitStructture.NVIC_IRQChannel = TIM4_IRQn;
    NVIC_InitStructture.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructture.NVIC_IRQChannelSubPriority = 3;
    NVIC_InitStructture.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructture);

    TIM_Cmd(TIM4,ENABLE);
}

void TIM4_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM4,TIM_IT_Update)!=RESET)
    {
        LED1=!LED1;
        TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
    }
}
void TIM4_PWM_Init(u16 arr,u16 psc)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
    TIM_OCInitTypeDef TIM_OCInitTypeStrue;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 // ¶Ë¿úÅäÖÃ
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                  
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO¿úËù¶èÎa50MHz
          GPIO_Init(GPIOB, &GPIO_InitStructure);       

    TIM_TimeBaseInitStrue.TIM_Period = arr;
    TIM_TimeBaseInitStrue.TIM_Prescaler = psc;
    TIM_TimeBaseInitStrue.TIM_CounterMode =TIM_CounterMode_Up;
    TIM_TimeBaseInitStrue.TIM_ClockDivision =0;
    TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStrue);

    TIM_OCInitTypeStrue.TIM_OCMode =TIM_OCMode_PWM1;
    TIM_OCInitTypeStrue.TIM_OCNPolarity =TIM_OCPolarity_High;
    TIM_OCInitTypeStrue.TIM_OutputState =TIM_OutputState_Enable;               
    TIM_OC3Init(TIM4, &TIM_OCInitTypeStrue);
                 
    TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);
    TIM_Cmd(TIM4,ENABLE);
}


最佳答案

查看完整内容[请看2#楼]

我函数调用错了,应该是TIM4_PWM();这样就可以了。谢谢老哥了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-7-3
在线时间
18 小时
 楼主| 发表于 2020-4-22 10:54:36 | 显示全部楼层
HXYDJ 发表于 2020-4-22 13:01
占空比改为从0--100%试试

我函数调用错了,应该是TIM4_PWM();这样就可以了。谢谢老哥了
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2020-4-22 13:01:24 | 显示全部楼层
占空比改为从0--100%试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 02:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表