按键控制灯亮灭程序代码Word格式文档下载.docx
《按键控制灯亮灭程序代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《按键控制灯亮灭程序代码Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
hal_flash.h"
//初始化一些配置
/*********************************************************************
*MACROS//宏指令
*/
*CONSTANTS//常量
//MaximunnumberofVddsamplescheckedbeforegoon
#defineMAX_VDD_SAMPLES3
#defineZMAIN_VDD_LIMITHAL_ADC_VDD_LIMIT_4//工作电压限制
*TYPEDEFS//典型定义
*GLOBALVARIABLES//全局变量
*EXTERNALVARIABLES//外部变量
*EXTERNALFUNCTIONS//外部函数
externboolHalAdcCheckVdd(uint8limit);
//外部转换器工作电压检查
*LOCALVARIABLES//局部变量
*LOCALFUNCTIONS//局部函数
staticvoidzmain_dev_info(void);
staticvoidzmain_ext_addr(void);
staticvoidzmain_vdd_check(void);
#ifdefLCD_SUPPORTED
staticvoidzmain_lcd_init(void);
#endif
*@fnmain
*@brief
*@returndon'
tcare
intmain(void)
{
//关闭中断
osal_int_disable(INTS_ALL);
//参数为INTS_ALL则关闭所有中断,否则关闭相应中断
//InitializationforboardrelatedstuffsuchasLEDs//处理器运行时钟,LEDIO口设置
HAL_BOARD_INIT();
//初始化板子硬件部分
//Makesuresupplyvoltageishighenoughtorun//确保电源电压足够高来运行
zmain_vdd_check();
//InitializeboardI/O//初始化I/O
InitBoard(OB_COLD);
//InitialzeHALdrivers//硬件驱动
HalDriverInit();
//InitializeNVSystem//nv系统初始化
osal_nv_init(NULL);
//InitializetheMAC//初始化计算机系统
ZMacInit();
//Determinetheextendedaddress//确定扩展地址
zmain_ext_addr();
//InitializebasicNVitems//初始化虚拟条目
zgInit();
#ifndefNONWK
//SincetheAFisn'
tatask,callit'
sinitializationroutine//初始化程序
afInit();
//Initializetheoperatingsystem//初始化操作系统
osal_init_system();
//Allowinterrupts//允许中断
osal_int_enable(INTS_ALL);
//Finalboardinitialization//最终的硬件初始化
InitBoard(OB_READY);
//Displayinformationaboutthisdevice//显示关于这个设备的信息
zmain_dev_info();
/*DisplaythedeviceinfoontheLCD*//在液晶屏上显示设备信息
zmain_lcd_init();
#ifdefWDT_IN_PM1
//如果监视器被占用,这个位置可以启用
WatchDogEnable(WDTIMX);
osal_start_system();
//操作系统初始化
//NoReturnfromhere此处无返回
return0;
//Shouldn'
tgethere.//禁止到达这里
}//main()
*@fnzmain_vdd_check*@briefCheckiftheVddisOKtoruntheprocessor.
*@returnReturnifVddisok;
otherwise,flashLED,thenreset
*********************************************************************/
staticvoidzmain_vdd_check(void)//确认VDD是否达到运行处理器的要求,如果没有达到就会闪烁LED
uint8vdd_passed_count=0;
booltoggle=0;
//RepeatgettingthesampleuntilnumberoffailuresorsuccesseshitsMAX//重复检测VDD的状态,直到成功检测的次数达到规定过的要求为止,估计是等电源稳定
//thenbasedonthecountvalue,determineifthedeviceisreadyornot//然后根据计算值,确定设备是否准备好
while(vdd_passed_count<
MAX_VDD_SAMPLES)//工作电压最大值校验
{
if(HalAdcCheckVdd(ZMAIN_VDD_LIMIT))//转换器电压
vdd_passed_count++;
//Keeptrack#timesVddpassesinarow计算通过的电压
MicroWait(10000);
//延时10毫秒
else
vdd_passed_count=0;
//重置通过的电压
MicroWait(50000);
//延时50毫秒
//50毫秒后再次尝试
//HalAdcCheckVdd()
【hal_adc.c】函数用来检查VDD是否大于或等于最小的要求.
/*toggleLED1andLED2*//切换LED1、LED2
if(vdd_passed_count==0)
if((toggle=!
(toggle)))
HAL_TOGGLE_LED1();
HAL_TOGGLE_LED2();
}
/*turnoffLED1关闭LED1
HAL_TURN_OFF_LED1();
HAL_TURN_OFF_LED2();
}
/**************************************************************************************************
*@fnzmain_ext_addr
*
*@briefExecuteaprioritizedsearchforavalidextendedaddressandwritetheresults
*intotheOSALNVsystemforusebythesystem.TemporaryaddressnotsavedtoNV.
*inputparameters
*None.
*outputparameters
*@returnNone.
***************************************************************************
staticvoidzmain_ext_addr(void)//静态的外部地址扩展
uint8nullAddr[Z_EXTADDR_LEN]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
uint8writeNV=TRUE;
//将8位数位写入虚拟化层
//Firstcheckwhetheranon-erasedextendedaddressexistsintheOSALNV.//检查非扩展地址是否存在于操作虚拟化层
if((SUCCESS!
=osal_nv_item_init(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,NULL))||
(