找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1138|回复: 0
收起左侧

单片机定时器2作为串口,定时器1同时开启,程序自动复位

[复制链接]
ID:643820 发表于 2021-12-21 21:00 | 显示全部楼层 |阅读模式
把定时器2作为串口波特率来接收蓝牙数据,定时器1用来PWM调速,蓝牙发送指令之后接收到指令,定时器1进入中断之后就直接复位了
一开始是能够接收之后正常执行指令的,多发送几次之后就会出现这种问题,手动复位之类的也试过,只要出现这个情况之后就会一直这样子

单片机源程序如下:
  1. void car_timer_isr() interrupt 3
  2. {
  3.         TH1 = (T1_VAL) / 256;
  4.         TL1 = (T1_VAL) % 256;
  5.         if(car_pwm_left == 0)
  6.         {
  7.                 car_motor_left_forward = 0;
  8.                 car_motor_left_backward = 0;
  9.         }else if(car_tick < car_pwm_left)
  10.         {
  11.                 if(car_dir_left) //前进
  12.                 {
  13.                         car_motor_left_forward = 1;
  14.                         car_motor_left_backward = 0;
  15.                 }else{
  16.                         car_motor_left_forward = 0;
  17.                         car_motor_left_backward = 1;
  18.                 }
  19.         }else{
  20.                 car_motor_left_forward = 0;
  21.                 car_motor_left_backward = 0;
  22.         }
  23.         if(car_pwm_right == 0)
  24.         {
  25.                 car_motor_right_forward = 0;
  26.                 car_motor_right_backward = 0;
  27.         }else if(car_tick < car_pwm_right)
  28.         {
  29.                 if(car_dir_right)
  30.                 {
  31.                         car_motor_right_forward = 1;
  32.                         car_motor_right_backward = 0;
  33.                 }else{
  34.                         car_motor_right_forward = 0;
  35.                         car_motor_right_backward = 1;
  36.                 }
  37.         }else{
  38.                 car_motor_right_forward = 0;
  39.                 car_motor_right_backward = 0;
  40.         }
  41.         car_tick++;
  42.         if(car_tick >= 10)car_tick = 0;
  43. }
复制代码




回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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