gliethttpgliethttp.blog.chinaunix.net
gliethttp
全部博文(2005)
2014年(2)
2013年(2)
2012年(16)
2011年(66)
2010年(368)
2009年(743)
2008年(491)
2007年(317)
linux_zj
程睿
mzh2100
dogsun88
叶绍琛
kowems
gongping
chumojin
高泽然
xy7777
os123456
hiderhao
zahassio
byy6by
zxy11861
COVID_19
a1960048
swzswz
分类:
2007-07-16 10:44:52
arm7处理器at91sam7s64省电模式idle文章来源:http://gliethttp.cublog.cn{uint32 PMC_MCKR; extern volatile boolean at91sam7s64_power_on; at91sam7s64_power_on = false; {//1.主机时钟转为slow慢时钟 PMC_MCKR = AT91C_BASE_PMC->PMC_MCKR; T91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK | AT91C_PMC_PRES_CLK_64;//进入最省电的慢时钟64分频模式 AT91C_BASE_PMC->PMC_MOR = 0x00; //禁用主振荡器 } {//2.禁用所有外设时钟,停止处理器运行 uint32 PMC_PCSR; uint32 PMC_SCSR; PMC_PCSR = AT91C_BASE_PMC->PMC_PCSR; PMC_SCSR = AT91C_BASE_PMC->PMC_SCSR; AT91C_BASE_PMC->PMC_PCDR = -1; //禁止除SYS和FIQ之外的所有外设时钟 AT91C_BASE_PMC->PMC_SCDR = -1; //处理器进入idle空闲省电模式,注意IRQ和FIQ中断代码要区分 //在这里恢复执行的中断,如果调用与主机时钟相关的东西,如:dbgu //串口发送数据,是不允许的,时钟不对,所以需要at91sam7s64_power_on标志的保护. AT91C_BASE_PMC->PMC_PCER = PMC_PCSR; //由IRQ或FIQ中断唤醒 AT91C_BASE_PMC->PMC_SCER = PMC_SCSR; //主要配置UDP和PCKx } {//3.主机时钟转为初始值 AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x06 <<8) | AT91C_CKGR_MOSCEN )); while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS)); AT91C_BASE_PMC->PMC_MCKR = PMC_MCKR; //恢复进入idle之前模式 } at91sam7s64_power_on = true;}
上一篇:戴上耳机听一听这么畅快的笑声
下一篇:北京公安部部长罗瑞卿[罗长子]
登录 注册