CSR1010 sdk藍牙


轉:http://blog.csdn.net/lorain_lynies/article/details/52038640


CSR1010 I/O開發須知:
關於I/O操作的函數庫被定義在頭文件<pio.h>中,查閱函數庫我們需要用到一下幾個函數:
1、設置引腳模式,我們需要將其設為user模式。

[cpp]  view plain  copy
 
  1. void  PioSetModes (uint32 mask, pio_mode mode)   

2、設置方向,分為輸入和輸出,這里我們需要將button引腳設置為輸入,led引腳設置為輸出。

[cpp]  view plain  copy
 
  1. void  PioSetDir (uint16 pio, bool output)   

3、設置電流相關,對於led引腳需要設置為允許大電流模式,button引腳設置為弱電流模式。

[cpp]  view plain  copy
 
  1. void  PioSetPullModes (uint32 mask, pio_pull_mode mode)   

4、設置I/O產生相關事件,此處使用sys_event_pio_changed事件。

[cpp]  view plain  copy
 
  1. void  PioSetEventMask (uint32 mask, pio_event_mode mode)   

 

每次產生事件都會調用下面的系統函數來對事件進行響應,其具體操作由開發者編寫。

 

 

 

[cpp]  view plain  copy
 
  1. void AppProcessSystemEvent(sys_event_id id, void *data)  

 

 

 

5、使用CSR uEnergy SDK進行開發時,沒有main()函數,代碼先執行void AppPowerOnReset(void),然后執行void AppInit(sleep_state last_sleep_state)進行初始化工作,之后由系統事件觸發執行void AppProcessSystemEvent(sys_event_id id, void *data)和bool AppProcessLmEvent(lm_event_code event_code, LM_EVENT_T *event_data)。

 

示例代碼如下:

 

 

 

[cpp]  view plain  copy
 
  1. #include <main.h>  
  2. #include <pio.h>  
  3. #include <ls_app_if.h>  
  4.   
  5. #define PIO_BUTTON      11  
  6. #define PIO_LED0        10  
  7. #define PIO_LED1        4  
  8.   
  9. #define PIO_DIR_OUTPUT  TRUE  
  10. #define PIO_DIR_INPUT   FALSE  
  11.   
  12. void AppPowerOnReset(void)  
  13. {  
  14. }  
  15.   
  16. void AppInit(sleep_state last_sleep_state)  
  17. {  
  18.   
  19.     PioSetModes((1UL << PIO_LED0) | (1UL << PIO_LED1), pio_mode_user);  
  20.   
  21.     PioSetDir(PIO_LED0, PIO_DIR_OUTPUT);  
  22.     PioSetDir(PIO_LED1, PIO_DIR_OUTPUT);  
  23.   
  24.     PioSetPullModes((1UL << PIO_LED0) | (1UL << PIO_LED1), pio_mode_strong_pull_up);  
  25.   
  26.     PioSetMode(PIO_BUTTON, pio_mode_user);  
  27.   
  28.     PioSetDir(PIO_BUTTON, PIO_DIR_INPUT);  
  29.   
  30.     PioSetPullModes((1UL << PIO_BUTTON), pio_mode_weak_pull_up);  
  31.   
  32.     PioSetEventMask((1UL << PIO_BUTTON), pio_event_mode_both);  
  33. }  
  34.   
  35. void AppProcessSystemEvent(sys_event_id id, void *data)  
  36. {  
  37.     if (id == sys_event_pio_changed)  
  38.     {  
  39.         const pio_changed_data *pPioData = (const pio_changed_data *)data;  
  40.         if (pPioData->pio_cause & (1UL << PIO_BUTTON) )  
  41.         {  
  42.             if (pPioData->pio_state & (1UL << PIO_BUTTON))  
  43.             {  
  44.                 PioSets((1UL << PIO_LED0) | (1UL << PIO_LED1), 0xffffUL);  
  45.             }  
  46.             else  
  47.             {  
  48.                 PioSets((1UL << PIO_LED0) | (1UL << PIO_LED1), 0UL);  
  49.             }  
  50.         }  
  51.     }  
  52. }  
  53.   
  54. bool AppProcessLmEvent(lm_event_code event_code, LM_EVENT_T *event_data)  
  55. {  
  56.     return TRUE;  
  57. }  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM