OpenEdv-开源电子网

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

关于STM32F103VET6芯片定时器8的PWM输出没有波形

[复制链接]

7

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2019-7-23
在线时间
63 小时
发表于 2023-7-26 17:44:10 | 显示全部楼层 |阅读模式
50金钱
如标题STM32F103VET6芯片定时器8的PWM输出没有波形,同样的程序使用TIM1就可以输出波形!!
有没有大神指导一下啊!!

我将引脚定义更改为TIM8-->CH1的PC6,TIM8-->CH1N的PA7    BKN改为PA6

下面程序是TIM8的PWM输出:


void bsp_pwm_init(void)
{
        GPIO_InitTypeDef        GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_OCInitTypeDef       TIM_OCInitStructure;
        TIM_BDTRInitTypeDef     TIM_BDTRInitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
       
        /* TIM1 PWM CH1 CH2 CH3 --> PA8 PA9 PA10 */
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
       
        /* TIM1 PWM CHN1 CHN2 CHN3 --> PB13 PB14 PB15 */
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        /* TIM1 PWM Break --> PB12 */
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        /* 基本初始化 */
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
        TIM_TimeBaseStructure.TIM_Period        = 1000 - 1;
        TIM_TimeBaseStructure.TIM_Prescaler     = 0;
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseStructure.TIM_CounterMode   = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
       
        /* 比较输出初始化 */
        TIM_OCStructInit(&TIM_OCInitStructure);
        TIM_OCInitStructure.TIM_OCMode       = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState  = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity   = TIM_OCPolarity_High;
        TIM_OCInitStructure.TIM_OCNPolarity  = TIM_OCNPolarity_High;
        TIM_OCInitStructure.TIM_OCIdleState  = TIM_OCIdleState_Reset;
        TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
       
        TIM_OCInitStructure.TIM_Pulse = 500 - 1; /* 占空比50%(与基本初始化中的TIM_Period共同决定) */
        TIM_OC1Init(TIM8, &TIM_OCInitStructure);
        TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);
       
        TIM_OCInitStructure.TIM_Pulse = 500 - 1;
        TIM_OC2Init(TIM8, &TIM_OCInitStructure);
        TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);
       
        TIM_OCInitStructure.TIM_Pulse = 500 - 1;
        TIM_OC3Init(TIM8, &TIM_OCInitStructure);
        TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);
       
        /* 刹车和死区初始化 */
        TIM_BDTRStructInit(&TIM_BDTRInitStructure);
        TIM_BDTRInitStructure.TIM_OSSRState       = TIM_OSSRState_Enable;
        TIM_BDTRInitStructure.TIM_OSSIState       = TIM_OSSIState_Enable;
        TIM_BDTRInitStructure.TIM_LOCKLevel       = TIM_LOCKLevel_1;
        TIM_BDTRInitStructure.TIM_DeadTime        = 0x8F;
        TIM_BDTRInitStructure.TIM_Break           = TIM_Break_Enable;
        TIM_BDTRInitStructure.TIM_BreakPolarity   = TIM_BreakPolarity_Low;
        TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
        TIM_BDTRConfig(TIM8, &TIM_BDTRInitStructure);
       
        TIM_Cmd(TIM8, ENABLE);
        TIM_CtrlPWMOutputs(TIM8, ENABLE);
}





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

245

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1221
金钱
1221
注册时间
2014-11-25
在线时间
173 小时
发表于 2023-7-27 15:39:43 | 显示全部楼层
看是不是这个原因TIM_ARRPreloadConfig(TIM8, ENABLE); //使能TIMx在ARR上的预装载寄存器
回复

使用道具 举报

7

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2019-7-23
在线时间
63 小时
 楼主| 发表于 2023-7-28 09:58:36 | 显示全部楼层
不是,我加过ARR上的预装载寄存器函数,MDK自带的逻辑分析仪依旧没有波形输出
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-7-28 13:44:18 | 显示全部楼层
没波形是引脚悬空测的吗
回复

使用道具 举报

7

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2019-7-23
在线时间
63 小时
 楼主| 发表于 2023-7-28 14:40:13 | 显示全部楼层
godark 发表于 2023-7-27 15:39
看是不是这个原因TIM_ARRPreloadConfig(TIM8, ENABLE); //使能TIMx在ARR上的预装载寄存器


不是,我加过ARR上的预装载寄存器函数,MDK自带的逻辑分析仪依旧没有波形输出
回复

使用道具 举报

7

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2019-7-23
在线时间
63 小时
 楼主| 发表于 2023-7-28 14:40:51 | 显示全部楼层
阿侑kevin 发表于 2023-7-28 13:44
没波形是引脚悬空测的吗

对,只有仿真,引脚上没接任何东西
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 04:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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