进口芯片缺货严重,一直想了解下新唐的MCU,正好此次二姨家组织了新唐的新产品测评活动,于是毫不犹豫就申请了,并且获得了这次的测评机会,感谢新唐公司,感谢二姨。 习惯使用keil开发MCU,先去keil官网下载M471的固件包,如何快速找到所需要的固件包,可以通过直接搜索MCU型号,系统会自动提示该MCU对应的固件包。
下载,在keil的pack installer下安装好固件包后就可以看到所要使用的芯片型号了:
因为是第一次使用新唐的开发板,所以板载的下载调试器等的驱动必须要安装的,去官网下载驱动软件: https://www.nuvoton.com.cn/tool-and-software/ide-and-compiler/
同时把需要的开发板支持软件包BSP也下载下来: https://www.nuvoton.com.cn/board/numaker-m471ki/?index=2 需要的软件驱动等安装完成,这时就可以给板子上电了,注意板子上有2个USB口,必须要插在下载调试器的那个USB口上,否则虚拟串口不能用,不方便测试,同时要注意将VCOM拨码开关的1和2拨到on位置。将板子通过USB线插入电脑,此时在设备管理器上将能看到一个虚拟串口:
打开串口终端,按下板子上的复位键:
这是开发板自带的出厂程序运行结果。
打开BSP包中示例代码Template目录下的例程,主程序是这样的: int main() { SYS_Init(); /* Init UART to 115200-8n1 for printmessage */ UART_Open(UART0, 115200); /* Connect UART to PC, and open a terminaltool to receive following message */ printf("Hello World\n"); /* Got no where to go, just loop forever */ while(1); } 初始化硬件资源以及串口后,输出一串字符:Hello World。
编译,没有报错,点击下载,跳出错误提示窗:
Nu-Link下载器需要升级,点击“是”按钮,系统会自动升级,升级完成后提示:
再次点击下载,没有报错信息了。此时串口终端输出了新下载程序的运行结果:
新唐的开发板例程做的真好,在BSP包例子代码下有个目录StdDriver,里面有所有硬件资源的示例程序,这为初次使用新唐MCU的工程师带来了极大的便利。再打开一个例子程序进一步熟悉一下,选择GPIO_OutputInput,这个例子程序其实也很简单,主程序是这样的: int32_t main(void) { int32_t i32Err, i32TimeOutCnt; /* Init System, IP clock and multi-functionI/O. */ SYS_Init(); /* Init UART0 for printf */ UART0_Init(); printf("\n\nCPU @ %dHz\n",SystemCoreClock); printf("+-------------------------------------------------+\n"); printf("| PB.3(Output) and PC.1(Input) SampleCode |\n"); printf("+-------------------------------------------------+\n\n"); /*-----------------------------------------------------------------------------------------------------*/ /* GPIO Basic Mode Test --- Use Pin DataInput/Output to control GPIO pin */ /*-----------------------------------------------------------------------------------------------------*/ printf(" >> Please connect PB.3 and PC.1 first<< \n"); printf(" Press any key to start test by using [PinData Input/Output Control] \n\n"); getchar(); /* Configure PB.3 as Output mode and PC.1as Input mode then close it */ GPIO_SetMode(PB, BIT3, GPIO_MODE_OUTPUT); GPIO_SetMode(PC, BIT1, GPIO_MODE_INPUT); i32Err = 0; printf("GPIO PB.3(output mode) connectto PC.1(input mode) ......"); /* Use Pin Data Input/Output Control topull specified I/O or get I/O pin status */ /* Set PB.3 output pin value is low */ PB3 = 0; /* Set time out counter */ i32TimeOutCnt = 100; /* Wait for PC.1 input pin status is lowfor a while */ while(PC1 != 0) { if(i32TimeOutCnt > 0) { i32TimeOutCnt--; } else { i32Err = 1; break; } } /* Set PB.3 output pin value is high */ PB3 = 1; /* Set time out counter */ i32TimeOutCnt = 100; /* Wait for PC.1 input pin status is highfor a while */ while(PC1 != 1) { if(i32TimeOutCnt > 0) { i32TimeOutCnt--; } else { i32Err = 1; break; } } /* Print test result */ if(i32Err) { printf(" [FAIL].\n"); } else { printf(" [OK].\n"); } /* Configure PB.3 and PC.1 to defaultQuasi-bidirectional mode */ GPIO_SetMode(PB, BIT3, GPIO_MODE_QUASI); GPIO_SetMode(PC, BIT1, GPIO_MODE_QUASI); while(1); } 将板子的PB3口和PC1口短接,PB3置高,则PC1读取也应该是高电平;PB3置低,则PC1读取也应该是低电平,否则将输出错误提示。
编译程序,下载后运行,PB3口和PC1口没有短接的运行结果是这样的:
根据原理图:
将PB3口和PC1口用杜邦线短接,此时程序的运行结果则变为:
本次测评就到这儿,后面将根据时间情况进一步测试板子的其它资源,如PWM,定时器,I2C通讯等。
|