gateway_mcu/README.md

104 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 测试
串口中断发送通过测试
spi_flash读写通过测试
对智能模块通信串口,阻塞发送数据通过测试。
### 问题
#### 串口中断
25/02/24
在freerots环境下中断不生效
解决
> 25/02/25
>
> 需要启动freerots任务
>
> 同时中断部分
>
> ```c
> void UART5_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
> ```
>
> 变为
>
> ```c
> void UART5_IRQHandler(void) __attribute__((interrupt()));
> ```
>
> 其他中断同上,由硬件压栈变为软件压栈
#### 串口发送的数据不正确
25/02/28
解决
将数据通过队列发送需要将buff的位置移动到起始位置+结构体长度
```c
uint8_t *Buff = (uint8_t *)pvPortMalloc(200);
if (Buff == NULL) {
log_error("Memory allocation failed\n");
return;
}
queueUartSendInfo *sendBuff = (queueUartSendInfo *)Buff;
sendBuff->length = sizeof("hello world\n");
sendBuff->data = Buff + sizeof(queueUartSendInfo);
strlcpy((char *)sendBuff->data, "hello world\n", sizeof("hello world\n"));
// for (int i = 0; i < sizeof("hello world\n"); i++) {
// sendBuff->data[i] = data[i];
// }
// *sendBuff->data = *data;
// *sendBuff->data = 'H';
log_info("dataLen:%d\n", sendBuff->length);
log_info("data:%s\n", sendBuff->data);
xQueueSend(upward_uart_Queue, &Buff, 10);
vTaskDelay(1000);
```
#### 中断中不能分配和释放内存
解决
中断中添加信号量,通知任务来释放。
## 接收解析
#### su806传来的数据
见网关单片机通信协议
#### 传感器传来的数据