K210(K210)
K210模块是一个优化过图像处理能力的边缘计算设备,通过UART2和小车通讯
全局变量
| 全局变量 | 类型 | 注释 |
|---|---|---|
| buf_msg | char[20] | K210 接收消息缓冲区 |
| g_new_flag | uint8_t | 接收标志,用于指示是否正在接收新消息 |
| g_index | uint8_t | 消息索引,用于存储接收的字符 |
宏定义
| 宏定义 | 值 | 注释 |
|---|---|---|
| BUFFER_SIZE | 40 | K210 接收缓冲区大小 |
方法
USART2_init(u32 baudrate)
初始化 USART2(用于 K210 通信)
| 参数 | 类型 | 注释 |
|---|---|---|
| baudrate | u32 | 波特率 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
K210_Deal_Recv(uint8_t recv_msg)
解析 K210 模块发来的消息
| 参数 | 类型 | 注释 |
|---|---|---|
| recv_msg | uint8_t | 接收到的字符 |
| 返回值 | 类型 |
|---|---|
| 返回接收的完整字符串 | char* |
| 默认情况下以'$'字符作为数据包头, 以'#'作为数据包尾 | |
K210_Send_Msg(const char *data_str)
向 K210 模块发送字符串消息
| 参数 | 类型 | 注释 |
|---|---|---|
| data_str | const char* | 待发送的字符串 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
USART2_Send_U8(uint8_t ch)
发送一个字符到 K210 模块
| 参数 | 类型 | 注释 |
|---|---|---|
| ch | uint8_t | 要发送的字符 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
USART2_Send_ArrayU8(uint8_t *BufferPtr, uint16_t Length)
发送一个字节数组到 K210 模块
| 参数 | 类型 | 注释 |
|---|---|---|
| BufferPtr | uint8_t* | 待发送的数据指针 |
| Length | uint16_t | 数据长度 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
USART2_IRQHandler(void)
USART2 中断服务函数,处理接收到的数据
| 返回值 | 类型 |
|---|---|
| 无 | void |
使用示例
K210 代码, 请参照教程将下列代码运行在K210视觉模块上
from machine import UART
from fpioa_manager import fmfm.register(8, fm.fpioa.UART1_TX, force=True)
fm.register(6, fm.fpioa.UART1_RX, force=True)
uart_A = UART(UART.UART1, 115200, 8, 0, 1, timeout=1000, read_buf_len=4096)
uart_A.write("$Hello Yahboom#")
STM32小车的代码
#include "bsp_usart2.h"
#include "bsp_k210.h"
int main() {
bsp_init();
while(1) {}
return 0;
}
// 串口中断服务函数
// !注意!
// USART2_IRQHandler()函数默认写在 bsp_usart2.c 文件中
// 若想要在main.c里处理这个中断,需要删除bsp_usart2.c中的USART2_IRQHandler()函数
void USART2_IRQHandler(void) {
uint8_t Rx2_Temp;
if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) {
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
Rx2_Temp = USART_ReceiveData(USART2);
char* res;
res = K210_Deal_Recv(Rx2_Temp);
if(res != NULL) {
printf("recv: %s\n" , res);
}
}
}