本帖最后由 hjl2832 于 2021-6-1 22:26 编辑
很高兴收到CuriosityNano开发板,这一次,按照既定目标来进行测试 ,第一个目标,测试PIC18在休眠模式下的定时唤醒功能,我们通过浏览PIC单片机的数据手册能了解,PIC单片机要进行休眠模式后,主时钟是停止工作的,这点有别于ST的系列单片机(ST的芯片,在休眠模式时,主时钟会自动设为内部晶振工作)。这里可分别看数据手册的描述:
而为了满足休眠模式下的计时功能,定时器1设为SOSC模式可作为日历时钟作秒计时器用,实现定时计数及唤醒MCU的功能,官方的应用笔记里有关于怎么用TIMER1作为RTC时钟的示例。
首先,安装PIC单片机的开发环境,X IDE和MCC(IDE 的代码配置插件),这里大家都会,我就不列举了,只讲关于定时器配置及休眠唤醒相关的内容。
我们在进入IDE后,点击菜单栏的MCC图标,打开代码配置插件。
第一步:设置芯片的工作时钟,这里我设置为内部时钟4MHz,如下图所示:
第二步:分别点击左侧的芯片驱动列表,增加定时器1,串口1到工作区域,然后配置定时器1,在这里,为了保证定时器在休眠模式能正常工作,唤醒休眠模式,我们需要装定时器设定为SOSC模式,关于休眠模式下定时器的工作模式设定,我们可参考数据手册上的描述。为了启用定时器1的SOSC功能,我们需要先将板子上的32.768K晶振及负载电容焊上,同时还要短路晶振旁边的2个跳线点,将晶振连接到RA4和RA5引脚上。
按如下步骤配置定时器1:
1.设置工作模式为为SOSC模式;
2.设定定时时间为1S;
3.打开定时器中断;
4.设定中断回调为1S执行一次
第三步,配置LED接口的IO口功能为输出模式,通过查找原理图,我们知道开发板上的LED是连接到RC1端口上的,所以,这里我们配置RC1为推挽输出模式,为了方便后续进行测试,我们同时配置了RC0为外部中断输入模式,方便以后进行休眠电流测试。
第四步:配置UART1,在这里我设定波特率为19200,8N1模式
第五步:点击代码向导生成初始化函数
第六步,修改生成的向导代码,增加自己的功能,在这里我们的目标是测试PIC单片机在休眠模式下的定时器唤醒功能,所以需要进行以下操作:
1.在主程序中使能中断。
2.增加休眠函数,让单片机进入休眠模式。
3.在定时器1的中断回调函数中对LED控制端口进行取反操作,以便控制LED闪烁
第七步,编绎程序并下载到开发板,这时我们可以看到LED灯会按照1秒一次进行闪烁。
|