本帖最后由 Ricky Lee 于 2016-12-27 08:27 编辑
我平时写单片机一般都是用库函数来写的,因为这样入门较快,不需要深入了解单片机寄存器。在有时间要求的地方才用寄存器。拿到这款开发板,也是用同样的方式来写。先来了解下点灯的软件结构。我是用keil5.2。
common是库文件,Diolib.c是IO的设置函数。这次点灯只要时钟Clklib.c文件和IO设置库函数就可以了。我通常是把Startup Code 的文件 删掉,然后在配置里把CMSIS和Device里的选上。如下图:
看主函数。如下图:
主函数相当简单,要比STM32的设置要简单。DioOen(),这是IO设置IO输出函数。相当设置P0口的管脚。pADI_GP0是指类似51的P0口。0x10是指这个端口的第4个引脚。这个单片机共有3组端口可以设置pADI_GP0,pADI_GP1,pADI_GP2。如下图:
然后是外设时钟失能设置(低功耗需求),也可以不关。ClkCfg()这里是选择内部高速时钟作为系统时钟,16M。然后是无限循环。DioTgl()这个函数是翻转函数,直接翻转pADI_GP0第4个管脚。这个是通过delay来延时。这种延时比较浪费资源。这种单片机时钟只有16M,运行实时系统比较吃力,也不建议这么做。我通常的做法是使用一个定时器来生产时间片段来执行各个 程序任务。如下图:
本帖最后由 Ricky Lee 于 2016-12-27 08:27 编辑
我平时写单片机一般都是用库函数来写的,因为这样入门较快,不需要深入了解单片机寄存器。在有时间要求的地方才用寄存器。拿到这款开发板,也是用同样的方式来写。先来了解下点灯的软件结构。我是用keil5.2。
common是库文件,Diolib.c是IO的设置函数。这次点灯只要时钟Clklib.c文件和IO设置库函数就可以了。我通常是把Startup Code 的文件 删掉,然后在配置里把CMSIS和Device里的选上。如下图:
看主函数。如下图:
主函数相当简单,要比STM32的设置要简单。DioOen(),这是IO设置IO输出函数。相当设置P0口的管脚。pADI_GP0是指类似51的P0口。0x10是指这个端口的第4个引脚。这个单片机共有3组端口可以设置pADI_GP0,pADI_GP1,pADI_GP2。如下图:
然后是外设时钟失能设置(低功耗需求),也可以不关。ClkCfg()这里是选择内部高速时钟作为系统时钟,16M。然后是无限循环。DioTgl()这个函数是翻转函数,直接翻转pADI_GP0第4个管脚。这个是通过delay来延时。这种延时比较浪费资源。这种单片机时钟只有16M,运行实时系统比较吃力,也不建议这么做。我通常的做法是使用一个定时器来生产时间片段来执行各个 程序任务。如下图: