协议栈led分析_第1页
协议栈led分析_第2页
协议栈led分析_第3页
协议栈led分析_第4页
协议栈led分析_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、李曙英 2015. 2.28Led分析LedLed分析:认真阅读协议栈分析:认真阅读协议栈genericAppgenericApp工程里的工程里的led.cled.c和和led.hled.h文件,并分析文件,并分析1.1.文件中定义了几个文件中定义了几个ledled,硬件,硬件I/OI/O如何?找出这部分如何?找出这部分程序程序2.2.文件中文件中ledled的操作函数有哪些?具体说明每个函数的的操作函数有哪些?具体说明每个函数的功能。功能。定义LED名称#define HAL_LED_1 0 x01#define HAL_LED_1 0 x01#define HAL_LED_2 0 x02#

2、define HAL_LED_2 0 x02#define HAL_LED_3 0 x04#define HAL_LED_3 0 x04#define HAL_LED_4 0 x08#define HAL_LED_4 0 x08#define HAL_LED_ALL (HAL_LED_1 | HAL_LED_2 | #define HAL_LED_ALL (HAL_LED_1 | HAL_LED_2 | HAL_LED_3 | HAL_LED_4)HAL_LED_3 | HAL_LED_4)定义LED工作模式#define HAL_LED_MODE_OFF 0 x00#define HAL_L

3、ED_MODE_ON 0 x01#define HAL_LED_MODE_BLINK 0 x02#define HAL_LED_MODE_FLASH 0 x04#define HAL_LED_MODE_TOGGLE 0 x08LED其他相关定义#define HAL_LED_DEFAULT_MAX_LEDS 4#define HAL_LED_DEFAULT_MAX_LEDS 4#define HAL_LED_DEFAULT_DUTY_CYCLE #define HAL_LED_DEFAULT_DUTY_CYCLE 5 5 / /闪烁的默认亮灭的占空比#define HAL_LED_DEFAUL

4、T_FLASH_COUNT #define HAL_LED_DEFAULT_FLASH_COUNT 5050 / /默认的闪烁次数#define #define HAL_LED_DEFAULT_FLASH_TIME 1000HAL_LED_DEFAULT_FLASH_TIME 1000 / /默认的闪烁一次的时间为1000Led 硬件I/O 定义 # #define LED1_BV define LED1_BV BV(0)BV(0)#define LED1_SBIT P1_0#define LED1_SBIT P1_0#define LED1_DDR P1DIR#define LED1_DDR

5、 P1DIR# #define LED1_POLARITY ACTIVE_HIGHdefine LED1_POLARITY ACTIVE_HIGH#define BV(n) #define BV(n) (1 (n(1 (n) /) /“hal_defs.hhal_defs.h”#define ACTIVE_HIGH #define ACTIVE_HIGH ! / ! / # #define LED2_BV BV(1)define LED2_BV BV(1) #define LED2_SBIT P1_1 #define LED2_SBIT P1_1 #define LED2_DDR P1DIR

6、#define LED2_DDR P1DIR #define LED2_POLARITY ACTIVE_HIGH #define LED2_POLARITY ACTIVE_HIGH # #define LED3_BV BV(4)define LED3_BV BV(4) #define LED3_SBIT P1_4 #define LED3_SBIT P1_4 #define LED3_DDR P1DIR #define LED3_DDR P1DIR #define LED3_POLARITY ACTIVE_HIGH #define LED3_POLARITY ACTIVE_HIGH结构体:le

7、d控制参数typedef struct uint8 mode; /* 操作模式*/ uint8 todo; /* LED剩余闪烁的次数*/ uint8 onPct; /* LED闪烁的亮的占空比*/ uint16 time; /* 闪烁周期 S */ uint32 next; /*下一次转变的时间*/ HalLedControl_t;HalLedStatus_t结构体typedeftypedef structstruct HalLedControl_tHalLedControl_t HalLedControlTableHalLedControlTableHAL_LED_DEFAULT_MAX_

8、LEDS;HAL_LED_DEFAULT_MAX_LEDS; uint8 uint8 sleepActivesleepActive; ; HalLedStatus_tHalLedStatus_t; ;HalLedControlTableHalLedControlTableHAL_LED_DEFAULT_MAX_LEDSHAL_LED_DEFAULT_MAX_LEDS对每个LED的控制情况的数组,sleepActive是指在系统睡眠时候是否启用LED,如果是则为true,否则为falseHalLedState:全局变量,记录的是LED上次更新时候的状态 低四位分别表示四个LED。为1,它上次的状

9、态为ON, 为0,为OFFHalSleepLedState:全局变量,记录系统进入睡眠模式之前的四个LED的状态HalLedStatusControl:结构体的全局变量,记录四个LED的控制状态LED初始化 HAL_TURN_OFF_LED1( ); HAL_TURN_OFF_LED1( ); LED1_DDR |= LED1_BV; LED1_DDR |= LED1_BV; HAL_TURN_OFF_LED2HAL_TURN_OFF_LED2( ); ( ); LED2_DDR |= LED2_BV; LED2_DDR |= LED2_BV; HAL_TURN_OFF_LED3 HAL_TU

10、RN_OFF_LED3( ); ( ); LED3_DDR |= LED3_BV; LED3_DDR |= LED3_BV; P0INP P0INP |= PUSH2_BV|= PUSH2_BV; ; #define #define stst(x(x) do ) do x while (_LINE_ = -1 x while (_LINE_ = -1) )#define HAL_TURN_OFF_LED1#define HAL_TURN_OFF_LED1( ) ( ) stst( LED1_SBIT = LED1_POLARITY (0); ( LED1_SBIT = LED1_POLARIT

11、Y (0); ) )#define PUSH2_BV BV(0)#define PUSH2_BV BV(0)#define HAL_TURN_OFF_LED1#define HAL_TURN_OFF_LED1( ) ( ) stst( LED1_SBIT = LED1_POLARITY (0); ( LED1_SBIT = LED1_POLARITY (0); ) )#define HAL_TURN_ON_LED1#define HAL_TURN_ON_LED1( ) ( ) stst( LED1_SBIT = LED1_POLARITY (1); ( LED1_SBIT = LED1_POL

12、ARITY (1); ) )#define HAL_TOGGLE_LED2#define HAL_TOGGLE_LED2( ) ( ) stst( if (LED2_SBIT) LED2_SBIT = 0; ( if (LED2_SBIT) LED2_SBIT = 0; else else LED2_SBIT = 1; LED2_SBIT = 1; ) )#define HAL_STATE_LED3#define HAL_STATE_LED3( ) ( ) ( (LED3_POLARITY (LED3_SBIT)LED3_POLARITY (LED3_SBIT)void void HalLed

13、InitHalLedInit( void ( void ););uint8 uint8 HalLedSetHalLedSet( uint8 led, uint8 mode ( uint8 led, uint8 mode ););void void HalLedBlinkHalLedBlink( uint8 ( uint8 ledsleds, uint8 , uint8 cntcnt, uint8 , uint8 duty, uint16 time duty, uint16 time ););void void HalLedEnterSleepHalLedEnterSleep( void ( v

14、oid ););void void HalLedExitSleepHalLedExitSleep( void ( void ););uint8 uint8 HalLedGetStateHalLedGetState ( void ); ( void );void HalLedInit( void )LEDLED初始化:关闭所有的初始化:关闭所有的ledled, 定义为定义为闪烁的闪烁的ledled的的sleepactivesleepactive值值 为为FALSEFALSE,睡眠状态下不闪烁,睡眠状态下不闪烁uint8 HalLedSet( uint8 led, uint8 mode )将指定的将指定的ledled设置为设置为modemode模式模式参数:参数:led: ledled: led名称名称 mode: led mode: led工作模式工作模式 返回值:返回值:LEDLED的状态值的状态值void HalLedBlink( uint8 leds, uint8 cnt, uint8 duty, uint16 time )控制控制ledled闪烁闪烁参数:参数:leds:ledleds:led名称名称 cntcnt: :闪烁次数:闪烁次数:00永远闪烁永远闪烁 1-n: 1-n:闪烁闪烁n n次次 duty: duty:亮暗占空比,亮暗占空比,0-1000-1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论