平衡车的蓝牙在哪里开启,平衡车蓝牙在哪里打开

首页 > 实用技巧 > 作者:YD1662023-11-16 07:18:39

int main(void) { u8 t; u8 len; delay_init(); //=====延时函数初始化 NVIC_Configuration(); //=====中断优先级分组 uart1_init(9600); //=====串口1初始化 uart3_init(115200); //=====串口3初始化即蓝牙初始化 delay_ms(100); LED_Init(); //=====初始化与 LED 连接的IO KEY_Init(); //=====按键初始化 OLED_Init(); //=====OLED初始化 OLED_Clear(); //=====OLED清屏 while(1) { delay_ms(50); //=====50ms刷一次屏幕,频率就是20HZ,不需要一直刷。 OLED_ShowString(0,2,"Bluetooth_Test",12); OLED_ShowString(0,4,"Recieve:",12); //USART_SendData(USART3,recieve_bluetooth_DATA); if(USART3_RX_STA&0x8000) { len=USART3_RX_STA&0x3fff;//得到此次接收到的数据长度 Uart3SendStr("\r\n您发送的消息为:\r\n"); for(t=0;t<len;t ) { USART3->DR=USART3_RX_BUF[t]; while((USART3->SR&0X40)==0);//等待发送结束 } Uart3SendStr("\r\n");//插入换行 USART3_RX_STA=0; } OLED_ShowString(50,4,USART3_RX_BUF,12); LED=~LED; //表明程序一直处于运行? } }

遇到的问题【BUG】

1)每次串口3只可以打印两个字节

原来是:

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

改为:

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

解决方法:

1.提升串口的接收的优先级,让其先执行;

2.删除中断函数的printf语句,可能是超时导致的

3.尽量不要在中断函数中进行接发操作,在中断函数中将数据存储起来便可以。

效果图:

平衡车的蓝牙在哪里开启,平衡车蓝牙在哪里打开(9)

,
上一页123末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.