目前共有5篇帖子。
目前總結的TinyOS常用操作
1樓 巨大八爪鱼 2016-10-12 22:24
使用I/O口組件:
components HplMsp430GeneralIOC;
MyC.LED1 -> HplMsp430GeneralIOC.Port54;  // 用LED1表示P5.4
uses interface HplMsp430GeneralIO as LED1;

將I/O口設置為輸入/輸出:
call LED1.makeInput();
call LED1.makeOutput();
輸入: call LED1.get();
輸出0/1:
call LED1.clr();
call LED1.set();
call LED1.toggle(); // 反轉高低電平


2樓 巨大八爪鱼 2016-10-12 22:24
讀I/O口所在埠(如P5)的8個I/O口的狀態:
call LED1.getRaw();
(相當於51單片機中的P0、P1之類的暫存器,以及AVR單片機中的PORTA、PORTB等暫存器)
判斷I/O口目前是輸入還是輸出:
call LED1.isInput();
call LED1.isOutput();
讀取或判斷I/O口是否使用其復用功能:
call LED1.selectModuleFunc();
call LED1.selectIOFunc();
call LED1.isModuleFunc();
call LED1.isIOFunc();

3樓 巨大八爪鱼 2016-10-12 22:25
MSP430單片機中有兩個基本定時器:TimerA和TimerB
使用定時器組件:components Msp430TimerC;
使用定時器A:
MyC.TimerA -> Msp430TimerC.TimerA;
uses interface Msp430Timer as TimerA;
必須實現定時器中斷函數:
async event void TimerA.overflow(void) {}
啟用/禁用定時器中斷:
call TimerA.enableEvents();
call TimerA.disableEvents();

4樓 巨大八爪鱼 2016-10-12 22:25
BusyWaitMicroC延時組件
使用組件:
components BusyWaitMicroC;
MyC.BusyWait -> BusyWaitMicroC.BusyWait;
uses interface BusyWait<TMicro, uint16_t>; // 其中的兩個參數不能改變

延時100微秒:
call BusyWait.wait(100);

5樓 巨大八爪鱼 2016-10-12 22:25
標準1秒延時函數
// 延時1秒
void delay_1s(void)
{
        uint8_t i;
        for (i = 0; i < 20; i++) {
            call BusyWait.wait(50000u); // 延時50000微秒(=50毫秒)
        }
}

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
 
 
©2010-2024 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。