本帖最后由 南来之风 于 2021-12-11 12:44 编辑
感谢Microchip和21ic提供的此次测评机会。之前测评都是使用的MPLAB X IDE + MCC,非常的方便生成各种驱动代码。
拿到板子后,首先在电脑上搭建相应的开发环境。好在Microchip提供了比较便捷的IDE,比如MPLAB X。把板子插上电脑后,软件会自动识别板卡。
板卡上有个供用户使用的LED,即:
下面开始新建一个空白项目:
进入项目后,激活MCC,配置驱动。
这次下载了最新的工具,进入MCC Content Manager Wizard后,点击Finish按钮总是不停的旋转。折腾了一晚上也没有下载完成。
眼看着完不成任务了,又开始寻找替代的开发环境。这时发现了ATMEL START,一个在线的开发环境!非常的轻量级,没有了下载安装的烦恼。
对于此次的UART数据回显,需要添加最基本的UART模块:
在左侧的管脚复用区域,配置引脚的方向:
然后可以导出配置信息,之后我们可以导入到本地的MPLAB X中,进行开发,不用打开本地的MCC了!
准备下载程序到单片机上,发现了如下错误:
可以试试:
FUSES = {
.WDTCFG = 0x00, // WDTCFG {PERIOD=OFF, WINDOW=OFF}
.BODCFG = 0x00, // BODCFG {SLEEP=DIS, ACTIVE=DIS, SAMPFREQ=1KHZ, LVL=BODLEVEL0}
.OSCCFG = 0x7E, // OSCCFG {FREQSEL=20MHZ, OSCLOCK=CLEAR}
.SYSCFG0 = 0xE6, // SYSCFG0 {EESAVE=CLEAR, RSTPINCFG=UPDI, TOUTDIS=CLEAR, CRCSRC=NOCRC}
.SYSCFG1 = 0xFF, // SYSCFG1 {SUT=64MS}
.APPEND = 0x00, // APPEND {APPEND=User range: 0x0 - 0xFF}
.BOOTEND = 0x00, // BOOTEND {BOOTEND=User range: 0x0 - 0xFF}
};
LOCKBITS = 0xC5; // {LB=NOLOCK}
然后把生成的代码粘贴到main.c中即可!
下面是主函数代码:
int main(void)
{
/* Initializes MCU, drivers and middleware */
atmel_start_init();
/* Replace with your application code */
int i = 0;
char TempChar;
while (i++ != 10) {
printf("Hello World! %d\r\n", i);
}
while (1){
// Check that "hello" was received on loopback RX.
// Initialize rx buffer so strncmp() check will work
/*
for (i = 0; i < strlen("hello"); i++) {
rx = USART_0_read(); // Blocks until character is available
}
* */
memset(MyRx, 0, sizeof(MyRx));
while((TempChar = USART_0_read()) != '\0'){
if(TempChar != '\n')
MyRx[i++] = TempChar;
else
break;
//printf("%c\r\n", TempChar);
}
MyRx = '\0';
if(MyRx[0] != '\0'){
printf("SendBack: %s\r\n", MyRx);
}
i = 0;
}
}
最终的效果是:
在串口助手发送字符串到单片机:
然后单片机通过RX口接受数据后,保存在本地数组中,然后在输出到串口,通过tx
在这里要给ATMEL的在线开发环境点赞,也希望Mplab x工具能够更加方便些!
|