硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1989|回复: 4
收起左侧

bsp_SetTIMOutPWM 连续调用出现问题,求解

[复制链接]

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2019-2-24 10:25:30 | 显示全部楼层 |阅读模式
连续调用了12次bsp_SetTIMOutPWM,输出不正确:输入SetValue小于某个值的时候一直输出低电平,高于的时候输出高电平,没有PWM输出。
而这12个函数,每一个单独调用的时候都好使。
连在一起调用就不好使,中间加上5ms延时也不好使。
求解,这是为啥呢?


bsp_SetTIMOutPWM(GPIOB, GPIO_Pin_15, TIM12, 2, 1000, SetValue);// PB15 TIM12 CH2
bsp_SetTIMOutPWM(GPIOB, GPIO_Pin_14, TIM12, 1, 1000, SetValue);//PB14 TIM12 CH1
bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_8, TIM1, 1, 1000, SetValue);//PA8 TIM1 CH1
bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_9, TIM1, 2, 1000, SetValue);//PA9 TIM1 CH2
bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_10, TIM1, 3, 1000, SetValue);//PA10 TIM1 CH3
bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_11, TIM1, 4, 1000, SetValue);//PA11 TIM1 CH4
bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_3, TIM2, 4, 1000, SetValue);//PA3 TIM2 CH4
bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_2, TIM2, 3, 1000, SetValue);//PA2 TIM2 CH3
bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_1, TIM2, 2, 1000, SetValue);//PA1 TIM2 CH2

bsp_SetTIMOutPWM(GPIOA, GPIO_Pin_0, TIM2, 1, 1000, SetValue); //PA0 TIM2 CH1
bsp_SetTIMOutPWM(GPIOE, GPIO_Pin_6, TIM9, 2, 1000, SetValue);//PE6 TIM9 CH2

bsp_SetTIMOutPWM(GPIOE, GPIO_Pin_5, TIM9, 1, 1000, SetValue);//PE5 TIM9 CH1




回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-2-24 10:44:20 | 显示全部楼层
void bsp_SetTIMOutPWM(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, TIM_TypeDef* TIMx, uint8_t _ucChannel,
         uint32_t _ulFreq, uint32_t _ulDutyCycle)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
        uint16_t usPeriod;
        uint16_t usPrescaler;
        uint32_t uiTIMxCLK;

        if (_ulDutyCycle == 0)
        {               
//                TIM_Cmd(TIMx, DISABLE);                /* 1ر&#213WMêä3ö */
                bsp_ConfigGpioOut(GPIOx, GPIO_Pin);        /* ÅäÖÃGPIOÎaíÆíìêä3ö */               
                GPIO_WriteBit(GPIOx, GPIO_Pin, Bit_RESET);        /* PWM = 0 */               
                return;
        }
        else if (_ulDutyCycle == 10000)
        {
//                TIM_Cmd(TIMx, DISABLE);                /* 1ر&#213WMêä3ö */

                bsp_ConfigGpioOut(GPIOx, GPIO_Pin);        /* ÅäÖÃGPIOÎaíÆíìêä3ö */               
                GPIO_WriteBit(GPIOx, GPIO_Pin, Bit_SET);        /* PWM = 1 */        
                return;
        }
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-2-24 10:45:08 | 显示全部楼层
找到原因了,用一个定时器,其他路输出是0,TIM被关闭了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2019-2-24 11:44:29 | 显示全部楼层
ycwjl728 发表于 2019-2-24 10:45
找到原因了,用一个定时器,其他路输出是0,TIM被关闭了。

不好意思啊,回复晚了
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-2-24 15:50:52 | 显示全部楼层
eric2013 发表于 2019-2-24 11:44
不好意思啊,回复晚了

哈哈,硬汉兄,我刚发完帖子自己就忽然感觉好像有点思路了。。
一试就ok了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 03:06 , Processed in 0.040875 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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