OpenEdv-开源电子网

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

兄弟们,帮忙看下这个主程序应该写点啥,我正在学习这个,希望早点让电机动起来

[复制链接]

5

主题

7

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-3-24
在线时间
3 小时
发表于 2019-3-29 16:04:28 | 显示全部楼层 |阅读模式
#include "main.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_rcc.h"     //touwenjian
void SystemInit (void)
{
  /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
  /* Set HSION bit */
  RCC->CR |= (unsigned int)0x00000001;    //时钟控制寄存器  开启内部8MHz时钟

  /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
}
void MiniBalance_Motor_Init(void)
{
        RCC->APB2ENR|=1<<3;       //位2使能,GPIOB
        GPIOB->CRH&=0X0000FFFF;   //GPIOB->CRH采用浮空输入模式(复位后的状态)
        GPIOB->CRH|=0X22220000;   //GPIOB.12|GPIOB.13|GPIOB.14|GPIOB.15
}
void MiniBalance_PWM_Init(u16 arr,u16 psc)      //脉冲宽度调制
{                                                         
        MiniBalance_Motor_Init();
        RCC->APB1ENR|=1<<1;                     //使能TIM3   
        RCC->APB2ENR|=1<<3;                     //位2使能,GPIOB      
        GPIOB->CRL&=0XFFFFFF00;                 //GPIOB.0|GPIOB.1采用复用功能推挽输出模式最大速度=50MHz
        GPIOB->CRL|=0X000000BB;
        TIM3->ARR=arr;                          //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
        TIM3->PSC=psc;                          //设置用来作为TIMx时钟频率除数的预分频值
        TIM3->CCMR2|=6<<12;                     //CH4 PWM模式1   先有效电平后无效电平  有效电平、无效电平是高还是低,由CCER的CCxP位决定
        TIM3->CCMR2|=6<<4;                      //CH3 PWM模式1   先有效电平后无效电平  有效电平、无效电平是高还是低,由CCER的CCxP位决定
        TIM3->CCMR2|=1<<11;                     //CH4 预装载使能
        TIM3->CCMR2|=1<<3;                      //CH3预装载使能
        TIM3->CCER|=1<<12;                      //OC4输出使能
        TIM3->CCER|=1<<8;                       //OC3 输出使能
        TIM3->CR1=0x8000;  
        TIM3->CR1|=0x01;                                                                                   
}   
int main(void)   
{
        SysTick->CTRL&=0xfffffffb;
        SystemInit();
        MiniBalance_PWM_Init(3599,0);
        while(1)

{
        GPIOB->ODR &= ~(1<<8);                   //PB7输出低电平
        PWMA = 3000;
        PWMB = 3000;
        GPIO_ResetBits(GPIOB,GPIO_Pin_15);       //AIN2=0
        GPIO_SetBits(GPIOB,GPIO_Pin_14);         //AIN1=1   
        GPIO_ResetBits(GPIOB,GPIO_Pin_13);       //BIN1=0
        GPIO_SetBits(GPIOB,GPIO_Pin_12);         //BIN2=1   
}

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

使用道具 举报

153

主题

310

帖子

0

精华

高级会员

Rank: 4

积分
673
金钱
673
注册时间
2019-3-26
在线时间
18 小时
发表于 2019-3-29 16:25:15 | 显示全部楼层
http://www.iis7.com/c/90/
回复 支持 反对

使用道具 举报

5

主题

7

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-3-24
在线时间
3 小时
 楼主| 发表于 2019-3-31 11:14:01 | 显示全部楼层

谢谢啦
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 23:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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