普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2908|回复: 2

[已解决] stm32 f103 定时器4通道3pwm

[复制链接]

3

主题

5

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2020-12-3 11:25:31 | 显示全部楼层 |阅读模式
stm32 f103 定时器4通道3,用的板子是z400的,pwm输出到蜂鸣器,没反应,有没有哪位能解答一下的
pwm.c文件的内容
#include "pwm.h"

void TIM4_CH3_PWM_Init(u16 per,u16 psc)
{
        //定义结构体
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
       
        //开启时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
       
        //配置GPIO口
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
       
        //开启指定管脚部分映射
        GPIO_PinRemapConfig(GPIO_Remap_TIM4,ENABLE);
       
        //计数模式配置
        TIM_TimeBaseInitStructure.TIM_Period=per;
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc;
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);
       
        //初始化PWM输出参数
        TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
        TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
        TIM_OC3Init(TIM4,&TIM_OCInitStructure);
       
        TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);
       
        TIM_ARRPreloadConfig(TIM4,ENABLE);
       
        TIM_Cmd(TIM4,ENABLE);
}



下面是主函数的内容
#include "system.h"
#include "SysTick.h"
#include "beep.h"
#include "pwm.h"

int main()
{
        u16 i=0;
        u8 fx=0;
        SysTick_Init(72);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分 2 组
        TIM4_CH3_PWM_Init(500,72-1);

        while(1)
        {
                if(fx==0)
                {
                        i++;
                        if(i==300)
                        {
                                fx=1;
                        }
                }
                else
                {
                        i--;
                        if(i==0)
                        {
                                fx=0;
                        }
                }
                TIM_SetCompare3(TIM4,i);
                delay_ms(4);
        }
}


回复

使用道具 举报

3

主题

5

帖子

53

积分

注册会员

Rank: 2

积分
53
 楼主| 发表于 2020-12-3 18:41:17 | 显示全部楼层
找到解决方法了把下面的内容注释掉就可以了//GPIO_PinRemapConfig(GPIO_Remap_TIM4,ENABLE);
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-25 16:12 , Processed in 0.087586 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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