初级会员

- 积分
- 151
- 金钱
- 151
- 注册时间
- 2018-7-19
- 在线时间
- 44 小时
|
按网上的资料写了下电机驱动的代码,然后接上线下载程序电机就是不转,电池也是12V供电,也不知道哪里出问题了,麻烦大佬帮忙看看
- int main(void)
- {
- u16 pwmval=1950;
- u8 dir=1;
- HAL_Init(); //初始化HAL库
- Stm32_Clock_Init(RCC_PLL_MUL9); //设置时钟,72M
- delay_init(72); //初始化延时函数
- uart_init(115200); //初始化串口
- //LED_Init(); //初始化LED
-
- INITInit();
- TIM1_PWM_Init(999,71); //72000KHZ/(999+1)*(71+1)=1KHZ
- INIT2=0;
- INIT1=1;
- while(1)
- {
- INIT2=1;
- INIT1=0;
- delay_ms(500);
- }
- }
- //TIM1 PWM部分初始化
- //arr:自动重装值。
- //psc:时钟预分频数
- //定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
- //Ft=定时器工作频率,单位:Mhz
- void TIM1_PWM_Init(u16 arr,u16 psc)
- {
- TIM1_Handler.Instance=TIM1; //定时器1
- TIM1_Handler.Init.Prescaler=psc; //定时器分频
- TIM1_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;//向上计数模式
- TIM1_Handler.Init.Period=arr; //自动重装载值
- TIM1_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
- HAL_TIM_PWM_Init(&TIM1_Handler); //初始化PWM
-
- TIM1_CH1Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1
- TIM1_CH1Handler.Pulse=arr; //设置比较值,此值用来确定占空比,默认比较值为自动重装载值的一半
- TIM1_CH1Handler.OCPolarity=TIM_OCPOLARITY_HIGH; //输出比较极性为蹈?
- HAL_TIM_PWM_ConfigChannel(&TIM1_Handler,&TIM1_CH1Handler,TIM_CHANNEL_1);//配置TIM1通道1
-
- HAL_TIM_PWM_Start(&TIM1_Handler,TIM_CHANNEL_1);//开启PWM通道1
-
- }
- //定时器底层驱动,时钟使能,引脚配置
- //此函数会被HAL_TIM_PWM_Init()调用
- //htim:定时器句柄
- void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
- {
- GPIO_InitTypeDef GPIO_Initure;
-
- if(htim->Instance==TIM1)
- {
- __HAL_RCC_TIM1_CLK_ENABLE(); //使能定时器1
- __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
-
- GPIO_Initure.Pin=GPIO_PIN_8; //PA8
- GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
- GPIO_Initure.Pull=GPIO_PULLUP; //上拉
- GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//高速
- HAL_GPIO_Init(GPIOA,&GPIO_Initure);
-
-
- }
- }
- void INITInit(void)
- {
-
- GPIO_InitTypeDef GPIO_Initure;
- __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
- GPIO_Initure.Pin=GPIO_PIN_4|GPIO_PIN_5;
- GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
- GPIO_Initure.Pull=GPIO_PULLUP; //上拉
- GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//高速
- HAL_GPIO_Init(GPIOA,&GPIO_Initure);
-
- HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4|GPIO_PIN_5,GPIO_PIN_RESET);
- }
- //设置TIM1通道1的占空比
- //compare:比较值
- void TIM_SetTIM1Compare1(u32 compare)
- {
- TIM1->CCR1=compare;
- }
- //定时器1中断服务函数
- void TIM1_IRQHandler(void)
- {
- HAL_TIM_IRQHandler(&TIM1_Handler);
- }
-
复制代码
|
|