本帖最后由 jiekou001 于 2021-4-22 17:51 编辑
本次使用新唐官方自己的开发IDE创建工程。
输入工程名称,选择新唐Hello world模板
选择自己使用的芯片和参数
然后一路下一步,直到完成。
将会自动生成一个简单的如下工程。
- int main()
- {
- SYS_Init();
- /* Init UART0 to 115200-8n1 for print message */
- UART_Open(UART0, 115200);
- /* Connect UART to PC, and open a terminal tool to receive following message */
- printf("Hello World\n");
- /* Got no where to go, just loop forever */
- while(1);
- }
接下来配置定时器,用于使用库函数中的延时函数
下面的代码是自动生成的,可以看到使用了内部48M RC振荡器,仅配置了串口时钟
- void SYS_Init(void)
- {
- /* Unlock protected registers */
- SYS_UnlockReg();
- /* Enable HIRC clock (Internal RC 48MHz) */
- CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);
- /* Wait for HIRC clock ready */
- CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);
- /* Select HCLK clock source as HIRC and HCLK source divider as 1 */
- CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));
- /* Enable UART0 clock */
- CLK_EnableModuleClock(UART0_MODULE);
- /* Switch UART0 clock source to HIRC */
- CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));
- /* Update System Core Clock */
- SystemCoreClockUpdate();
- /* Set PB multi-function pins for UART0 RXD=PB.6 and TXD=PB.4 */
- SYS->GPB_MFP1 = (SYS->GPB_MFP1 & ~(SYS_GPB_MFP1_PB4MFP_Msk | SYS_GPB_MFP1_PB6MFP_Msk)) | \
- (SYS_GPB_MFP1_PB4MFP_UART0_TXD | SYS_GPB_MFP1_PB6MFP_UART0_RXD);
- /* Lock protected registers */
- SYS_LockReg();
- }
接下来添加定时器时钟配置函数。其实配置都是相似的,只是修改参数,鼠标放到现有函数会给你显示相关参数
在系统内核时钟更新函数之前输入
- /* Enable IP clock */
- CLK_EnableModuleClock(TMR0_MODULE);
- /* Select IP clock source */
- CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0SEL_HIRC, 0);
接下来就可以在主函数调用定时器0的延时函数了。每个单位为1us,比如延时1秒钟
- TIMER_Delay(TIMER0, 1000000);
主函数修改为
- int main()
- {
- SYS_Init();
- /* Init UART0 to 115200-8n1 for print message */
- UART_Open(UART0, 115200);
- /* Connect UART to PC, and open a terminal tool to receive following message */
- while(1)
- {
- printf("Hello World\n");
- TIMER_Delay(TIMER0, 1000000);
- printf("Hello M0A23\n");
- TIMER_Delay(TIMER0, 1000000);
- }
- }
保存并构建程序的debug和Release
接下来烧录程序,启动ICP工具,并连接开发板
成功后确定,系统将自动复位,开始运行程序。这个时候通过串口连接开发板观察打印内容
发现打印了一条后就卡住了,这是为什呢,观察工程,原来是自动生成的程序没有添加timer.c库文件
只有这4个基本的库文件添加了,头文件是全部都添加的。
接下来拷贝其他的库文件到工程的库文件目录
然后清理工程,这时候刚才拷贝进去的就都 出现了,重复的4个文件选择跳过。切记
重新编译,重新烧录,大功告成。已经可以正常运行了。
|