按键控制灯亮灭程序代码.docx
- 文档编号:1082168
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:11
- 大小:18.24KB
按键控制灯亮灭程序代码.docx
《按键控制灯亮灭程序代码.docx》由会员分享,可在线阅读,更多相关《按键控制灯亮灭程序代码.docx(11页珍藏版)》请在冰豆网上搜索。
按键控制灯亮灭程序代码
Zigbee模块之间的互相通讯:
#include"ZComDef.h"
#include"OSAL.h"
#include"OSAL_Nv.h"
#include"OnBoard.h"
#include"ZMAC.h"
/*Hal*/
#include"hal_lcd.h"
#include"hal_led.h"
#include"hal_adc.h"
#include"hal_drivers.h"
#include"hal_assert.h"
#include"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();
#endif
//Initializetheoperatingsystem//初始化操作系统
osal_init_system();
//Allowinterrupts//允许中断
osal_int_enable(INTS_ALL);
//Finalboardinitialization//最终的硬件初始化
InitBoard(OB_READY);
//Displayinformationaboutthisdevice//显示关于这个设备的信息
zmain_dev_info();
/*DisplaythedeviceinfoontheLCD*//在液晶屏上显示设备信息
#ifdefLCD_SUPPORTED
zmain_lcd_init();
#endif
#ifdefWDT_IN_PM1
//如果监视器被占用,这个位置可以启用
WatchDogEnable(WDTIMX);
#endif
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 { if(HalAdcCheckVdd(ZMAIN_VDD_LIMIT))//转换器电压 { vdd_passed_count++;//Keeptrack#timesVddpassesinarow计算通过的电压 MicroWait(10000);//延时10毫秒 else { vdd_passed_count=0;//重置通过的电压 MicroWait(50000);//延时50毫秒 MicroWait(50000);//50毫秒后再次尝试 //HalAdcCheckVdd()【hal_adc.c】函数用来检查VDD是否大于或等于最小的要求. /*toggleLED1andLED2*//切换LED1、LED2 if(vdd_passed_count==0) { if((toggle=! (toggle))) HAL_TOGGLE_LED1(); else HAL_TOGGLE_LED2(); } } /*turnoffLED1关闭LED1 HAL_TURN_OFF_LED1(); HAL_TURN_OFF_LED2(); } /************************************************************************************************** *@fnzmain_ext_addr * *@briefExecuteaprioritizedsearchforavalidextendedaddressandwritetheresults *intotheOSALNVsystemforusebythesystem.TemporaryaddressnotsavedtoNV. * *inputparameters * *None. * *outputparameters * *None. * *@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))|| (
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 按键 控制 灯亮灭 程序代码