前言
上一节,我们成功地操控了GPIO,并点亮了LED,同时我们还用nrf_delay_ms函数实现了较高精度的延时操作,细心的朋友可以会发现,我们好像并没有设置系统时钟,那么上一讲中真正用的是时钟哪什么,我们又将如何去修改主时钟呢。这一我们将完成这一工作。
Nrf51822的时钟系统如下图所示:
关于Hfclk时钟有如下描述:
本节将给大家展示如何选择外部晶振作为HFCLK时钟源。
示例详解
基于硬件平台: nrf51822ek_tm开发板。
本示例所用的最小系统板原理图:
-
- 工程创建:
- 打开KEIL,新建一个空工程:Project->New uVision Project
- 工程创建:
工程名为nrfxx-gpio确认后按下图选择芯片为nrf51822_xxAA->ok
在弹出的对话框中勾选CMSIS中的CORE;Device中的Startup(后面有nrf51 Series字样的);在nrf_device中勾选nrf_delay,nrf_gpio, nrf_err, nrf_clock.
OK之后工程自动生成如下代码:
新建一个空白文档,保存为main.c,并加入工程中:
-
- 工程代码
- OK之后在man.c中加入如下代码:
- 工程代码
配置工程,选择使用MicroLIB库,可以减小程序体积:
加入NRF51定义,并选择化等级3,可以减小程序体积,但仿真运行时可能会出现与代码顺序不一致现象:
调试工具选择J-LINK,并将接口设置为SW口勾选下载程序后自动复位及运行:
-
- 编译工程,仿真调试-》全速运行后Peripherals->ClOCK查看CLOCK寄存器值(开始自动更新结果):
如何选择HFCLK时钟源为外部晶振呢,可以按如下操作:
再次编译运行,开始自动更新结果,查看clock寄存器结果:
晶振为16Mhz,同样可以看到蓝色LED在闪烁(亮500ms 灭500ms )对应的波形如下所示:
OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!
文中源码资料下载,在公众号里给十三发消息:
下载|一起学nRF51xx 2
关注十三公众号