本帖最后由 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个文件选择跳过。切记
重新编译,重新烧录,大功告成。已经可以正常运行了。
|