EA = 1; REN = 1;
下载后测试发现依然无法接收到 uart1 的数据(自发自收)
任务管理器uart2是能够正常收发的。
然后printf(s_debug_recvptr);
改为printf(DMABuffer);
DMABuffer数组是我自己定义的。
下载后测试发现依然无法接收到 uart1 的数据(自发自收)
- /**************************************************************************//**
- * @item CosyOS-II User
- * @file Taskmgr.c
- * @brief CosyOS-II 任务管理器
- * @detail 当前配置为使用UART2,用户可自行调整。
- 正常情况下,下方代码中,您仅需调整:UART2_Isr、中断向量号、S2CON、S2TI、S2RI、S2BUF。
- 您需自行初始化串口、串口中断优先级、波特率等相关配置。
- * @author 迟凯峰
- * @version V1.0.2
- * @date 2024.05.11
- ******************************************************************************/
-
- #include "..\System\os_link.h"
- #if SYSCFG_DEBUGGING == __ENABLED__
- #include "user.h"
-
- u8 xdata DMABuffer[256]; // 数据存放在XRAM(XDATA区域),需要使用关键字xdata
- bit DmaTxFlag; // 发送完成标志
- bit DmaRxFlag; // 接收完成标志
- bit B_TX1_Busy; // 串口忙标志
- u8 Rx_cnt; // Rx接收计数
- u8 RX_TimeOut; // 串口接收超时计数
-
-
- /* 应用示例 - 8051/80251 UART1 */
- void UART1_Isr(void) interrupt 4
- {
- if (RI) // 接收完成标志置1时
- {
- RI = 0; // 清零接收完成标志
- DMABuffer[Rx_cnt++] = SBUF; // 将接收到的数据存入缓冲区
- if (Rx_cnt >= 256) Rx_cnt = 255; // 防止溢出
- RX_TimeOut = 5; // 如果5ms内没有接收到新的数据,判定一串数据接收完毕
- DmaRxFlag = 1; // 接收完成标志置1
- }
- if (TI) // 发送标志置1时
- {
- TI = 0; // 清零发送完成标志
- B_TX1_Busy = 0; // 清零串口忙标志
- DmaTxFlag = 1; // 发送完成标志置1
- }
- }
-
-
- void UART2_Isr(void) interrupt 8// using 3
- {
- if(S2CON & S2TI){
- S2CON &= ~S2TI;
- if(*s_debug_sendptr){
- S2BUF = *s_debug_sendptr++;
- }
- else{
- iDebugSend;
- }
- }
- if(S2CON & S2RI){
- S2CON &= ~S2RI;
- if(s_debug_recvptr - s_debug_recvbuff < OS_DEBUGRECVBUFFSIZE - 1){
- *s_debug_recvptr++ = S2BUF;
- }
- iDebugRecv;
- }
- }
-
- #endif
复制代码
ES=1;
然后我将ES也设置,下载到单片机后系统不运行了。 |