OpenEdv-开源电子网

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

PWM控制电机寄存器程序问题

[复制链接]

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2018-4-18
在线时间
18 小时
发表于 2018-5-21 19:50:23 | 显示全部楼层 |阅读模式
本人新手想通过PWM波使能电机驱动,原理当按下ZDYM_PRES使能后低电平有效和PWM驱动,使能电机。
不知下面哪里有错误,望各位大神指出。谢谢


void TIM4_PWM_Init(void)
{                                                          

        RCC->APB1ENR|=1<<2;                //TIM4时钟使能   
        RCC->AHB1ENR|=1<<3;           //ê1&#196;üPORTDê±&#214;ó       
        GPIO_Set(GPIOD,PIN14,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_NONE)        ;//复用
        GPIO_AF_Set(GPIOD,14,2);        //PD14,AF2
       
        TIM4->ARR=99;                        //自动重装载值
        TIM4->PSC=449;                        //预分频
        TIM4->CCMR2|=6<<4;          //CH3 PWM1         
        TIM4->CCMR2|=1<<3;         //CH3 预分频使能          
        TIM4->CCER|=1<<8;           //CH3 输出使能
        TIM4->CCER|=0<<9;           //CH3 高电平有效
        TIM4->CR1|=1<<7;                   //ARPE使能
        TIM4->CR1|=1<<0;            //定时器4使能
  TIM4->CCR3=50;  //占空比50%       
}  

void KEY_Init(void)
{
        RCC->AHB1ENR|=1<<0;     //使能按键时钟
        GPIO_Set(GPIOA,PIN4,GPIO_MODE_IN,0,0,GPIO_PUPD_PU);                        
}

u8 KEY_Scan(u8 mode)
{         
        static u8 key_up=1;
        if(mode)key_up=1;   
        if(key_up&&(KEY0==0||KEY1==0||KEY2==0||ZDYM==0))
        {
                delay_ms(10)
                key_up=0;
                if(KEY0==0)return 1;
                else if(KEY1==0)return 2;
                else if(KEY2==0)return 3;
                else if(ZDYM==0)return 4;
        }else if(KEY0==1&&KEY1==1&&KEY2==1&&ZDYM==1)key_up=1;             
        return 0;//
}
void PWM_changefre(void)
{
        RCC->AHB1ENR|=1<<8;
        GPIO_Set(GPIOI,PIN5,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_NONE);
        RCC->AHB1ENR|=1<<7;//ê1&#196;üPORTHê±&#214;ó
        GPIO_Set(GPIOH,PIN12,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_NONE);
        PI5_IO=1;
        PH12_IO=1;
}

主函数:

                while(1)
                {       
                        key=KEY_Scan(0);
                          if(key)                                        
                                {
                                        switch(key)
                                        {
                                                case ZDYM_PRES:
                                                PWM_changefre();  
                                                break;

                                        }
                                }

                    }

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

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2018-4-18
在线时间
18 小时
 楼主| 发表于 2018-5-21 20:22:25 | 显示全部楼层
其中我已经发现        TIM4->ARR=449;                        
                               TIM4->PSC=99;                                     *******
                                 TIM4->CCR3=225;

已改正,但目前还未实现PWM波
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 08:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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