#include "jj_blueteeth.h" #include "jj_motion.h" #include "by_fan_control.h" bool bt_rx_flag = false; uint8 bt_buffer; // 接收字符存入 float bt_angle = 0.0f; uint32_t bt_run_flag = 0; uint8_t bt_flow_flag = 0; uint32_t bt_fly = 0; uint32_t bt_flow = 0; enum bt_order { Start_work = 0x01, Turn_Left = 0x02, Turn_Right = 0x03, Speed_up = 0x04, Speed_down = 0x05, Stop_fly = 0x06, Flow_on = 0x08, Flow_up = 0x09, Flow_down = 0x10, }; /** * @brief 蓝牙初始化 * @retval 无 */ void jj_bt_init() { uart_init(UART_2, 115200, UART2_MAP1_TX_D5, UART2_MAP1_RX_D6); // uart_tx_interrupt(UART_2, 1); uart_rx_interrupt(UART_2, ENABLE); } /** *@brief 蓝牙中断回调函数 */ void jj_bt_run() { if (bt_rx_flag) { switch (bt_buffer) { case Start_work: bt_angle = 0.0f; break; case Turn_Left: bt_angle = 10.0f; break; case Turn_Right: bt_angle = -10.0f; break; case Speed_down: bt_fly -= 10; break; case Speed_up: bt_fly += 10; break; case Stop_fly: bt_run_flag = !bt_run_flag; break; case Flow_on: bt_flow_flag = !bt_flow_flag; break; case Flow_up: bt_flow += 20; break; case Flow_down: bt_flow -= 20; break; default: break; } if (bt_flow_flag == 0) { bt_flow = 0; } by_pwm_update_duty(bt_flow + 500, bt_flow + 500); bt_rx_flag = false; } } void bt_printf(const char *format, ...) { char sbuf[40]; va_list args; va_start(args, format); vsnprintf(sbuf, 40, format, args); va_end(args); for (uint16_t i = 0; i < strlen(sbuf); i++) { while (USART_GetFlagStatus((USART_TypeDef *)uart_index[UART_2], USART_FLAG_TC) == RESET) ; USART_SendData((USART_TypeDef *)uart_index[UART_2], sbuf[i]); } }