Files
LSMushui a4da5ad17c chore: 导入 Simba-OmniInfantry 基线(云台/底盘双工程)
- 云台(ROBOT_TYPE_GIMBAL)与底盘(ROBOT_TYPE_CHASSIS)完整固件源码
- 新增根级 .gitignore,排除 Keil MDK-ARM 构建产物(.o/.d/.crf/.axf/.lnp/.map/.htm/.sct/.dep/.iex/.lst 等)
  与 *.uvguix.* / DebugConfig/(与机器绑定的 UI 布局)
- core.autocrlf=false,避免固件源码在检出时被改动换行符
2026-09-12 10:28:21 +08:00

35 lines
1.4 KiB
C

#ifndef BSP_USART_H
#define BSP_USART_H
#include "stm32f4xx_hal.h"
/* 串口接收按"整帧"递交给注册回调(CAN 的按 ID 分发见 bsp_can.h) */
typedef void (*usart_rx_callback_f)(const uint8_t * frame, uint16_t len);
/* ---- 接收 ----
* 初始化在任务上下文调用一次;回调在中断上下文递交整帧,须尽量短 */
extern void usart1_init(uint8_t * rx_buf, uint16_t dma_buf_num, usart_rx_callback_f callback);
extern void usart3_init(uint8_t * rx_buf, uint16_t dma_buf_num, usart_rx_callback_f callback);
extern void usart6_init(uint8_t * rx_buf, uint16_t dma_buf_num, usart_rx_callback_f callback);
extern int usart_rx_register(UART_HandleTypeDef * huart, usart_rx_callback_f callback);
/* 各 USARTx_IRQHandler 的 USER CODE 区调用(需在 HAL_UART_IRQHandler 之前) */
extern void usart1_idle_isr(void);
extern void usart3_idle_isr(void);
extern void usart6_idle_isr(void);
/* ---- 发送 ----
* TX DMA 启动后 data 缓冲须保持有效直至传输完成 */
extern void usart1_tx_dma_init(void);
extern void usart1_tx_dma_enable(uint8_t * data, uint16_t len);
extern void usart6_tx_dma_enable(uint8_t * data, uint16_t len);
/* ---- 诊断(debug_task 打印) ---- */
extern volatile uint32_t dbg_usart1_idle;
extern volatile uint32_t dbg_usart3_idle;
extern volatile uint32_t dbg_usart6_idle;
extern volatile uint16_t dbg_usart3_last_len;
extern volatile uint16_t dbg_usart6_last_len;
#endif