西安网站的设计说明,买房网站怎么做,哪些网站可以做问卷,宁波快速建站公司使用定时器进行精确延时#xff0c;串口接收数据进行
50 0度 --十六进制32
250 180度 --十六进制FA
串口接收到AA 32两个字节#xff0c;舵机转到0度#xff1b;接收到AA FA#xff0c;转到180度。请验证代码#xff1a; const unsigned…使用定时器进行精确延时串口接收数据进行
50 0度 --十六进制32
250 180度 --十六进制FA
串口接收到AA 32两个字节舵机转到0度接收到AA FA转到180度。请验证代码 const unsigned long TIMER_PRESCALER 72; // 定时器预分频因子 const unsigned long MICROSECONDS_PER_SECOND 1000000; // 每秒微秒数
void setup() { Timer4.setPrescaleFactor(TIMER_PRESCALER); // 设置定时器预分频因子 Timer4.pause(); // 关闭定时器 Serial.begin(9600); // 初始化串口通信 pinMode(PB9,OUTPUT); }
char incomedate[2];
void loop() { if (Serial.available() 0)//串口接收到数据 { Serial.readBytes(incomedate,2); if(incomedate[0]0xAA) { //digitalWrite(LED_BUILTIN,LOW);// LED 亮起 if(incomedate[1]50 incomedate[1]250) for(int i0;i50;i) { digitalWrite(PB9,1); delayMicrosecondsWithTimer4(incomedate[1]*10); digitalWrite(PB9,0); delayMicrosecondsWithTimer4(19500); } } if(incomedate[0]s) Serial.println(test!); } delay(5); }
void delayMicrosecondsWithTimer4(unsigned long us) { HardwareTimer timer(4); // 创建定时器对象 unsigned long start micros(); // 获取当前时间 while (micros() - start us) { // 计算已经延时的微秒数 timer.setCount(0); // 将计数器归零 timer.setOverflow((TIMER_PRESCALER * us) / MICROSECONDS_PER_SECOND); // 设置溢出值单位为计数周期 timer.resume(); // 启动定时器开始延时 while (timer.getCount() 0) {} // 等待延时完成 timer.pause(); // 暂停定时器 } }