- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LGT8F0XA系统初始化与时钟管理
LGT8F0XA系统初始化与时钟管理
对于一般的系统而言,从上电开始,经过上电复位状态后,内核开始从初始化的程序地址读取第一条指令并执行。系统此时使用的时钟为上电默认时钟配置。大多数系统为了获得对全范围电压工作的支持,默认的系统工作时钟都会非常慢。所以对于特定的应用而言,需要在执行真正的用户程序前对时钟系统经行必要的配置,选择满足应用需要的时钟源和预分频系数。和时钟类似,系统其它模块的工作也是基于上电复位后的默认状态工作,如果默认的状态不符合应用的需求,也需要软件提前做好配置。如果用户使用C语言进行开发,编译器也需要一个可以正确工作的硬件环境,包括堆栈指针是否指向正确的初始化位置,变量区是否正确初始化,中断服务程序是否正确设置等等。下面本文将以LGT8F08A为参考设计,介绍LGT8F08A控制器的时钟设置以及系统休眠模式和相应的唤醒控制。
LGT8F08A时钟与休眠模式
3个系统时钟源和8级预分频器
5种系统睡眠模式及唤醒
硬件描述
LGT8F08A通过PC0和PC1与外部晶振连接,PC6接wakeup信号用作Power Off模式下的唤醒,PD2接外部中断ext0,PD3接外部中断ext1,PD7接外部中断ext3,PXn(PA0-PA7, PB0-PB3,PC0-PC3,PC6,PD0-PD7)接外部电平portx,均用作Sleep模式下的唤醒。
信号连接关系
Signal LGT8F08A External XTAL1 PC0 晶振 XTAL2 PC1 晶振 Wakeup PC6 唤醒Power/Off EXT0 PD2 Sleep后唤醒 EXT1 PD3 Sleep后唤醒 EXT2 PD7 Sleep后唤醒 PORTX PXn Sleep后唤醒 软件描述
系统配置工作时钟,睡眠模式及唤醒主要包括以下几个文件
DrvSys.c – 包括系统时钟的配置,睡眠模式和唤醒控制。
DrvEXINT.c – 使用外部中断模块的代码,包括外部中断的配置和中断使能控制。
DrvPCINT.c – 使用引脚电平改变中断模块的代码,包括引脚电平改变的配置和中断使能控制。
DrvRTC.c – 使用RTC模块的代码,包括RTC的配置,掉电模式和唤醒控制。
Smpl_DrvSysCfg.c – 包括主函数。
下图为软件操作的流程图
流程详细描述
SYS_Init – 初始化堆栈指针SP和片内SRAM。
Calibrate_RC – 精确调整内部振荡器。
Switch_Clk – 切换系统工作时钟,改变预分频器配置。
Enter_Sleep – 配置系统睡眠模式及唤醒源,进入睡眠模式。
Wakeup_Sleep – 从睡眠模式唤醒后的状态及处理。
Enter_PowerOff – 配置系统掉电模式及唤醒源,进入掉电模式。
Wakeup_PowerOff- 从掉电模式唤醒后的状态及处理。
详细代码示例
Calibrate_RC (see note 2)
// Calibrate Internal Oscillator
OSCCAL = 0x06;
Switch_Clk
// Enable external crystal oscillator
PMCR |= (1 OSCMEN);
// Wait 10ms for external crystal oscillator stable
mdelay_ms(10);
// Switch system clock to external crystal oscillator
PMCR |= (1 EXTMSEL);
// Disable internal oscillator to reduce power consumption
PMCR = ~(1 RC16MEN);
// Enable system clock pre‐scalar change
CLKPR = (1 CLKPCE);
// Config system clock pre‐scalar for divide by 16
CLKPR = (4 CLKPS0);
// Config system clock pre‐scalar for divide by 2
CLKPR = (1 CLKPCE);
CLKPR = (1 CLKPS0);
// Switch system clock to internal oscillator
PMCR |= (1 RC16MEN);
mdelay_ms(1);
PMCR = ~(1 EXTMSEL);
PMCR = ~(1 OSCMEN);
Enter_Sleep
// Set external interrupt sense
EICR
您可能关注的文档
- lesson 14 IO interrupt.ppt
- Lesson 14 Spectrum Analyzers电子技术专业英语教程.ppt
- Lesson 25 Choosing the right core.ppt
- Lesson 3 Preparing for the Customer Meeting (VSP - MGMT 5).docx
- lesson 3 Regional Economic Integration.ppt
- lenze9300_伺服基础培训.ppt
- Lesson0微机原理及应用.ppt
- Levis..doc
- Lexical features.ppt
- Linear LT3496三输出LED驱动方案.docx
最近下载
- 小学口算教学现状调查与对策探讨.docx
- 国家开放大学计算机应用基础(本) 终结性考试试题及参考答案.pdf
- 译林版英语七年级下单元知识点及语法归纳.doc VIP
- 沈北新区日处理量为35000m3d的市政污水处理厂工程设计.docx
- 2024年淮南省示范高中指标分配表 .pdf VIP
- 2024离婚起诉状 离婚起诉书(标准版).pdf
- 部编版小学语文四年级上册《王戎不取道旁李》教材分析.doc
- 近十年来150起较大及以上安全生产事故案例汇总A.pdf
- 2023年秋学期人教版初中历史九年级上册教学计划附教学进度表.pdf VIP
- 2022年山东开放大学公开招聘工作人员考试试题及答案.pdf VIP
文档评论(0)