PAGE1
PAGE1
LPC1768安全性和可靠性
1.引言
在设计复杂娱乐设备时,安全性与可靠性是至关重要的因素。LPC1768作为NXP系列中的一款高性能微控制器,提供了多种安全性和可靠性的功能,以确保设备在各种环境下的稳定运行和数据安全。本节将详细介绍LPC1768的安全性和可靠性功能,包括硬件和软件层面的措施,并通过具体的代码示例展示如何实现这些功能。
2.硬件安全性和可靠性
2.1看门狗定时器(WatchdogTimer)
看门狗定时器是一种硬件功能,用于检测和恢复系统故障。LPC1768内置了两个看门狗定时器:WDT和IWDG。这些定时器在系统出现异常时,会自动触发复位,从而防止系统进入不可恢复的状态。
2.1.1WDT(WatchdogTimer)
WDT是一个简单的定时器,当定时器溢出时,会触发系统复位。WDT可以通过配置寄存器来设置定时器的超时时间。
//WDT初始化
voidWDT_Init(uint32_ttimeout){
//使能WDT时钟
LPC_SC-PCONP|=(125);
LPC_SC-PCLKSEL1=~(0x0314);
LPC_SC-PCLKSEL1|=(0x0114);//设置PCLK为CCLK/4
//配置WDT模式
WDT-WDTC=(timeout0x0000FFFF);//设置超时时间
WDT-WDMOD=0x03;//使能WDT,定时器溢出时触发复位
//启动WDT
WDT-WDFEED=0xAA;
WDT-WDFEED=0x55;
}
//WDT喂狗
voidWDT_Feed(){
WDT-WDFEED=0xAA;
WDT-WDFEED=0x55;
}
2.2IWDG(IndependentWatchdogTimer)
IWDG是一个独立的看门狗定时器,它有自己的时钟源,不受系统时钟影响。IWDG可以通过配置寄存器来设置定时器的超时时间。
//IWDG初始化
voidIWDG_Init(uint32_ttimeout){
//使能IWDG时钟
LPC_SC-PCONP|=(111);
LPC_SC-PCLKSEL0=~(0x0322);
LPC_SC-PCLKSEL0|=(0x0122);//设置PCLK为CCLK/4
//配置IWDG模式
IWDG-TC=(timeout0x0000FFFF);//设置超时时间
IWDG-MOD=0x03;//使能IWDG,定时器溢出时触发复位
//启动IWDG
IWDG-FEED=0xAA;
IWDG-FEED=0x55;
}
//IWDG喂狗
voidIWDG_Feed(){
IWDG-FEED=0xAA;
IWDG-FEED=0x55;
}
2.3低电压检测(Brown-OutDetection)
低电压检测功能用于在系统电源电压低于某个阈值时触发复位,以防止系统在不稳定电压下运行。LPC1768通过配置BOD寄存器来实现这一功能。
//低电压检测初始化
voidBOD_Init(uint8_tthreshold){
//使能BOD
LPC_SC-BODCR|=(18);
//设置阈值
LPC_SC-BODCR=~(0x030);
LPC_SC-BODCR|=(threshold0);
}
2.4电源管理
LPC1768提供了多种电源管理功能,包括睡眠模式、深度睡眠模式和关机模式。这些模式可以降低功耗,提高系统的能效。
2.4.1睡眠模式(SleepMode)
睡眠模式下,CPU停止运行,但外设和RAM保持供电。进入睡眠模式可以通过执行WFI指令来实现。
//进入睡眠模式
voidEnterSleepMode(){
__WFI();//等待中断唤醒
}
2.4.2深度睡眠模式(DeepSleepMode)
深度睡眠模式下,CPU和大部分外设停止运行,但某些外设和RAM可以保持供电。进入深度睡眠模式需要配置电源管理控制寄存器。
//进入深度睡眠模式
voidEnterDeepSleepMode(