OSAL-led

1启搂、 LED燈設(shè)置

uint8 HalLedSet (uint8 leds, uint8 mode)
形參 Mode 的定義如下:
#define HAL_LED_MODE_OFF     0x00//關(guān)閉LED
#define HAL_LED_MODE_ON      0x01//打開LED
#define HAL_LED_MODE_BLINK   0x02//燈閃一次计维,
#define HAL_LED_MODE_FLASH   0x04//燈連續(xù)閃50次
#define HAL_LED_MODE_TOGGLE  0x08//燈的輸出取反


2扫责、 LED燈閃爍

void HalLedBlink (uint8 leds, uint8 numBlinks, uint8 percent, uint16 period)
【leds】:對應(yīng)的LED
【numBlinks】:閃爍次數(shù)
【percent】:占空比
【period】:周期(單位MS)

官方把代碼寫好了且開源了须板,大家有空可以看看(hal_led.c)碰镜,學(xué)習(xí)一下。


image.png

實現(xiàn)一個簡單的流水燈

//修改了hal_led.c文件
void HalLedInit (void)
{
    P1SEL &= ~( (1<<0) | (1<<1) | (1<<4)  );
    P1DIR |= (1<<0) | (1<<1) | (1<<4);
    HalLedStatusControl.sleepActive = FALSE;
}

void HalLedOnOff (uint8 leds, uint8 mode)
{
    if (leds & HAL_LED_1)
    {
        if (mode == HAL_LED_MODE_ON)
        {
            //HAL_TURN_ON_LED1();
            P1_0=1;
        }
        else
        {
            //HAL_TURN_OFF_LED1();
            P1_0=0;
        }
    }

    if (leds & HAL_LED_2)
    {
        if (mode == HAL_LED_MODE_ON)
        {
            //HAL_TURN_ON_LED2();
          P1_1=1;
        }
        else
        {
            //HAL_TURN_OFF_LED2();
          P1_1=0;
        }
    }

    if (leds & HAL_LED_3)
    {
        if (mode == HAL_LED_MODE_ON)
        {
            //HAL_TURN_ON_LED3();
          P1_4=1;
        }
        else
        {
            //HAL_TURN_OFF_LED3();
            P1_4=0;
        }
    }

    if (leds & HAL_LED_4)
    {
        if (mode == HAL_LED_MODE_ON)
        {
            //HAL_TURN_ON_LED4();
        }
        else
        {
            //HAL_TURN_OFF_LED4();
        }
    }

    /* Remember current state */
    if (mode)
    {
        HalLedState |= leds;
    }
    else
    {
        HalLedState &= (leds ^ 0xFF);
    }
}

//在SimpleBLETest.C修改了這個函數(shù)
uint16 SimpleBLETest_ProcessEvent( uint8 task_id, uint16 events )
{

  VOID task_id; // OSAL required parameter that isn't used in this function

  // SYS_EVENT_MSG 這是系統(tǒng)事件比如按鍵事件藍牙讀寫事件處理习瑰,都會置這個事件
  if ( events & SYS_EVENT_MSG )
  {
    // return unprocessed events
    return (events ^ SYS_EVENT_MSG);
  }

  // 這個是我們應(yīng)用程序自定義的事件绪颖,SBP_START_DEVICE_EVT 的值被定義為 0x0001, 
  // 實際上我們可以定義 16個事件甜奄, 第一的時候是以位來定義的
  // 這個 SBP_PERIODIC_EVT 就是在SimpleBLETest_Init初始化函數(shù)最后一行設(shè)置的事件
  if ( events & SBP_START_DEVICE_EVT )
  {
      // 第一次啟動定時器
      if ( SBP_PERIODIC_EVT_PERIOD )
      { // SBP_PERIODIC_EVT_PERIOD 為5000ms柠横, 即5秒,后產(chǎn)生SBP_PERIODIC_EVT 事件
        //osal_start_timerEx( SimpleBLETest_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD );

        // 下面的這個函數(shù)是自動重裝的函數(shù)课兄,只要啟動之后牍氛,就會定時 產(chǎn)生 SBP_PERIODIC_EVT 事件
        osal_start_reload_timer( SimpleBLETest_TaskID, SBP_PERIODIC_EVT, 500 );
      }
  
    //返回這個events與 SBP_START_DEVICE_EVT的異或值,告訴osal,這個實踐你已經(jīng)處理
    return ( events ^ SBP_START_DEVICE_EVT );   
  }

  // 產(chǎn)生定時器事件
  if ( events & SBP_PERIODIC_EVT )
  { 
    static uint8 m_led=0x01;
     HalLedSet( (HAL_LED_ALL), HAL_LED_MODE_OFF );
    // 點亮led1燈
    HalLedSet( m_led, HAL_LED_MODE_ON );
    
    m_led<<=1;
    if (m_led>0x04)
      m_led=0x01;
    
    return (events ^ SBP_PERIODIC_EVT);
  }


  // Discard unknown events
  return 0;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烟阐,一起剝皮案震驚了整個濱河市糜俗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖悠抹,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扩淀,居然都是意外死亡楔敌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門驻谆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卵凑,“玉大人,你說我怎么就攤上這事胜臊∩茁” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵象对,是天一觀的道長黑忱。 經(jīng)常有香客問我,道長勒魔,這世上最難降的妖魔是什么甫煞? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮冠绢,結(jié)果婚禮上抚吠,老公的妹妹穿的比我還像新娘。我一直安慰自己弟胀,他們只是感情好楷力,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孵户,像睡著了一般萧朝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上延届,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天剪勿,我揣著相機與錄音,去河邊找鬼方庭。 笑死厕吉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的械念。 我是一名探鬼主播头朱,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼龄减!你這毒婦竟也來了项钮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烁巫,沒想到半個月后署隘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡亚隙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年磁餐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阿弃。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡诊霹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渣淳,到底是詐尸還是另有隱情脾还,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布入愧,位于F島的核電站鄙漏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砂客。R本人自食惡果不足惜泥张,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞠值。 院中可真熱鬧媚创,春花似錦、人聲如沸彤恶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽声离。三九已至芒炼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間术徊,已是汗流浹背本刽。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赠涮,地道東北人子寓。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像笋除,于是被迫代替她去往敵國和親斜友。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348