[PIC®/AVR®/dsPIC®产品] 【CuriosityNano测评报告】AVR64DD32 - UART数据回显

[复制链接]
4903|1
 楼主| YangTwo 发表于 2022-11-7 15:25 | 显示全部楼层 |阅读模式
本帖最后由 YangTwo 于 2022-11-7 15:25 编辑

非常感谢论坛提供的这次体验AVR单片机的机会,这次的主控芯片是:AVR64DD32,属于AVR DD系列。该系列以AVR架构的低功耗性能为基础,采用世界级的核心独立外设(CIPs)选择和全负载智能模拟组合,功能强大。

此外,AVR DD系列具有全面的功能集,包括多电压输入/输出(MVIO),非常适合复杂的应用,或作为具有多个电源域的复杂设计中的配套微控制器(MCU)。


官方Github提供了非常丰富的例程用于快速上手:Curiosity Nano Out-of-the-Box Code using AVR64DD32 Microcontroller with MCC Melody。
本次工程在此基础上增加了串口回显的程序,用户可以通过串口发送1, 2, 3, 4 来决定进入哪个子程序。

第一步增加第四种程序模式:UART_SENDBACK即本工程的核心
  1. typedef enum {BLINKY, BUTTON, RAMP, UART_SENDBACK} programs_t;

第二步增加Switch-case语句相关分支:
  1.         case '4':
  2.             LED_SetHigh();
  3.             current_program = UART_SENDBACK;
  4.             printf("Program changed to send string back to PC through USART\r\n");
  5.             break;


第三步是串口回显的核心代码:
  1. static void Send_DataBack2PC_UART(void){
  2.     uint8_t i = 0;
  3.     unsigned char TempChar = USART0_Read();
  4.     memset(MyRx, 0, sizeof(MyRx));
  5.     //while(((TempChar = USART0_Read()) != 32)&&((TempChar = USART0_Read()) != '\n'));
  6.    
  7.     if(TempChar == '1' || TempChar == '2' || TempChar == '3'){
  8.         CLI_Execute_Command(TempChar);
  9.         return;
  10.     }
  11.     while((TempChar = USART0_Read()) != '\0'){
  12.         if(TempChar != '\n')
  13.             MyRx[i++] = TempChar;
  14.         else
  15.             break;
  16.     }
  17.     MyRx[i] = '\0';
  18.         
  19.     if(MyRx[0] != '\0'){
  20.         printf("SendBacktoPC: %s\r\n", MyRx);
  21.     }
  22.     i = 0;   
  23. }
首先,我们对串口发来的字符串的第一个字符进行检测,如果是1,2,3则需要立即结束该子程序,因为1,2,3,4是用来控制进入哪个子程序的。如果不是1,2,3,继续往下执行。


最后是串口回显的结果展示:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
pzsh 发表于 2022-11-8 14:30 | 显示全部楼层
打印了一个Microchip及其商标
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

110

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部