把定时器2作为串口波特率来接收蓝牙数据,定时器1用来PWM调速,蓝牙发送指令之后接收到指令,定时器1进入中断之后就直接复位了
一开始是能够接收之后正常执行指令的,多发送几次之后就会出现这种问题,手动复位之类的也试过,只要出现这个情况之后就会一直这样子
单片机源程序如下:
- void car_timer_isr() interrupt 3
- {
- TH1 = (T1_VAL) / 256;
- TL1 = (T1_VAL) % 256;
- if(car_pwm_left == 0)
- {
- car_motor_left_forward = 0;
- car_motor_left_backward = 0;
- }else if(car_tick < car_pwm_left)
- {
- if(car_dir_left) //前进
- {
- car_motor_left_forward = 1;
- car_motor_left_backward = 0;
- }else{
- car_motor_left_forward = 0;
- car_motor_left_backward = 1;
- }
- }else{
- car_motor_left_forward = 0;
- car_motor_left_backward = 0;
- }
- if(car_pwm_right == 0)
- {
- car_motor_right_forward = 0;
- car_motor_right_backward = 0;
- }else if(car_tick < car_pwm_right)
- {
- if(car_dir_right)
- {
- car_motor_right_forward = 1;
- car_motor_right_backward = 0;
- }else{
- car_motor_right_forward = 0;
- car_motor_right_backward = 1;
- }
- }else{
- car_motor_right_forward = 0;
- car_motor_right_backward = 0;
- }
- car_tick++;
- if(car_tick >= 10)car_tick = 0;
- }
复制代码
|