久久精品国产精品国产一区,少妇扒开毛毛自慰喷水,国产精品无码电影在线观看 ,久久天天躁夜夜躁狠狠85麻豆

思澈科技軟件開(kāi)發(fā)工具包  2.20
GPIO

通過(guò)pin device 可以設(shè)置GPIO輸入、輸出、中斷觸發(fā),同時(shí)還可以設(shè)置上下拉等。

需要在menuconfig里面使能以下2個(gè)宏:

  1. RT_USING_PIN
  2. BSP_USING_GPIO

獲取引腳編號(hào)(pin id)

不同于HAL層指定GPIO需要指定所在GPIO組和組內(nèi)的編號(hào),在驅(qū)動(dòng)層通常使用一個(gè)數(shù)字編號(hào)來(lái)表示某一個(gè)GPIO管腳(包括GPIOA和GPIOB),一下是驅(qū)動(dòng)層對(duì)所有GPIO編號(hào)的方法:

GPIO pin id
GPIOA_00 0
GPIOA_01 1
GPIOA_02 2
... ...
GPIOB_00 96
GPIOB_01 97
GPIOB_02 98
... ...

舉例說(shuō)明:

  • GPIOB03腳,pin id為 99
  • GPIOA03腳,pin id為 3
Note
也通過(guò)宏定義來(lái)獲取引腳編號(hào)
GET_PIN(port, pin)
#define LED0_PIN GET_PIN(1, 3) //GPIOA_03
#define LED1_PIN GET_PIN(2, 9) //GPIOB_09

例子1 中斷模式

PA00 設(shè)置為上升沿中斷觸發(fā)模式,等待3秒后關(guān)閉中斷觸發(fā)模式

static void pin_irq_callback(void *args)
{
LOG_I("pin_irq_callback");
}
void pin_irq()
{
rt_base_t pin_id = GET_PIN(1,0); //Get GPIOA_00 pin id
//Set pin input mode
rt_pin_mode(pin_id, PIN_MODE_INPUT_PULLUP);
//Enable rasing edge interrupt mode
rt_pin_attach_irq(pin_id, PIN_IRQ_MODE_RISING, gpio_int_callback, RT_NULL);
//Enable interrupt
rt_pin_irq_enable(pin_id, 1);
rt_thread_mdelay(3000);
//Disable interrupt
rt_pin_irq_enable(pin_id, 0);
//Detach irq handler
rt_pin_detach_irq(pin_id);
}

例子2 輸入或輸出模式

PB02 先設(shè)置輸入模式然后讀電平,再輸出高電平

void pin_read_and_write(void)
{
int v;
rt_base_t pin_id = GET_PIN(2,2); //Get GPIOB_02 pin id
//Set pin input mode
rt_pin_mode(pin_id, PIN_MODE_INPUT_PULLUP);
v = rt_pin_read(pin_id);
LOG_I("pin_read value=%d",v);
//Set pin ouput mode
rt_pin_mode(pin_id, PIN_MODE_OUTPUT);
//Set pin output high
rt_pin_write(pin_id, 1);
}