失败原因:使用的通道定时器错了
我以前认为定时器是相同的,没想到控制的引脚不同
我之前控制的是PA7,而电机输入是PB8
所以电机不转,按关的时候,D8灯灭
所以将TIM3_CH2改为TIM4_CH3
电机运行正常
下面是总代码
#include "system.h"
#include "SysTick.h"
#include "usart.h"
#include "led1.h"
#include "smg.h"
#include "hwjs.h"
#include "hwfs.h"
#include "pwm.h"
int main()
{
u8 i=0;
u8 buf[3];
ST_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //????????2?
USART1_Init(115200);
LED_Init();
SMG_Init();
Hwjs_Init();
sys_ctrl.l=0;
TIM4_CH3_PWM_Init(500,72-1);
TIM_SetCompare2(TIM4,0);
while(1)
{
if(hw_jsbz==1)
{
hw_jsbz=0;
printf("ºìÍâ½ÓÊÕÂë %0.8X\r\n",hw_jsm); //´òÓ¡
sys_ctrl.c=hw_jsm>>8;
hw_jsm=0;
}
buf[0]=0x38;
buf[1]=0x40;
buf[2]=gsmg_code[sys_ctrl.l];
SMG_Display(buf,6);
switch(sys_ctrl.c)
{case ADD: sys_ctrl.l++;
if(sys_ctrl.l>4)sys_ctrl.l=0;break;
case MIN:sys_ctrl.l--;
if(sys_ctrl.l<0)sys_ctrl.l=4;
break;
case STOP: sys_ctrl.l=0; break;
}
sys_ctrl.c=0;
TIM_SetCompare3(TIM4,sys_ctrl.l*124);
i++;
if(i%10==0)
LED0=!LED0;
delay_ms(10);
}
}