GPIO
目錄
1.GPIO接口
1)PIN的含義
2)數據結構
3)管腳配置
4)中斷配置
5)喚醒配置
2.MH1902T平臺
1.GPIO接口
1)PIN的含義
在代碼中,以GPIO_PIN_PTA0為例,說明下代表的含義:
1.GPIO_PIN_PTA0表示PIN;
2.A表示TYPE;
3.0表示PORT;
2)數據結構
gpio_config_t結構體的定義如下所示:
typedef struct _gpio_config {m_pin;m_mux;m_pad;GPIO_DIR_T m_dir;u32 m_value; }gpio_config_t;typedef enum _GPIO_DIR {GPIO_DIR_OUTPUT=0,GPIO_DIR_INPUT }GPIO_DIR_T;3)管腳配置
1、設置復用功能
s32 gpio_config_mux(pin_name, pin_cfg)2、設置上拉功能
s32 gpio_set_pad(pin_name, config)3、設置輸出功能,并賦初值
s32 gpio_dir_output(pin_name, u32 value)4、設置輸入功能
s32 gpio_dir_input(pin_name)5、GPIO簡化設置接口
此接口是以上1-4接口的合并,可以簡化代碼。
s32 gpio_config(gpio_config_t config) {if(GPIO_PIN_NONE == config.m_pin){return DEVSTATUS_ERR_PARAM_ERR;}gpio_config_mux(config.m_pin, config.m_mux);gpio_set_pad(config.m_pin, config.m_pad);if(MUX_CONFIG_GPIO == config.m_mux){if(GPIO_DIR_INPUT == config.m_dir) { gpio_dir_input(config.m_pin);}else { gpio_dir_output(config.m_pin, config.m_value);}}return DEVSTATUS_SUCCESS; }6、設置輸出值
s32 gpio_set_value(pin_name, u32 value)7、獲取輸入值
s32 gpio_get_value(pin_name)4)中斷配置
1、申請中斷
s32 gpio_irq_request(pin, void (*handler)(void* ), u32 flags, void *data)2、使能中斷
void gpio_irq_enable(pin)3、禁止中斷
void gpio_irq_disable(pin)4、清除中斷標志位
void gpio_irq_clean(pin)5、釋放中斷
s32 gpio_irq_free(pin)5)喚醒配置
s32 gpio_wakeup_ctl(pin, u8 flg)2.MH1902T平臺
1)每組GPIO包含4個32位寄存器
1、數據寄存器(Px_IODR)
1)Px_IODR高16位作為輸入寄存器(Px_IDR)(只讀);
2)Px_IODR低16位作為輸出寄存器(Px_ODR)(讀寫);
2、置位/復位寄存器(Px_BSRR)
Px_BSRR高16位作為reset寄存器,低16位作為set寄存器。
3、方向寄存器(Px_OEN)
1:輸入? ??0:輸出
4、上拉電阻使能寄存器(Px_PUE)
1:上拉使能? ??0:上拉禁能
2)每個PIN可以配置為多種工作方式
1、輸入模式(輸入高阻、輸入上拉)
輸入高阻:既不是高電平也不是低電平,如果用萬用表測的話有可能是高電平也可能是低電平,隨
它后面接的東西定的。
2、開漏輸出
開漏輸出最主要的特性就是高電平沒有驅動能力,需要借助外部上拉電阻才能真正輸出高電平;
開漏輸出的這一特性一個明顯的優勢就是可以很方便的調節輸出的電平,因為輸出電平完全
由上拉電阻連接的電源電平決定。
3、推挽輸出
推挽輸出的最大特點是可以真正的輸出高電平和低電平,在兩種電平下都具有驅動能力。
可以配置的工作模式如下圖所示:
3)所有PIN復位后默認狀態為上拉輸入
電阻值51KΩ
4)所有PIN均支持超低功耗喚醒
GPIO僅支持低電平喚醒,可通過WKUP_PL_EN、WKUP_PH_EN寄存器配置IO喚醒源。
1、超低功耗喚醒源使能(WKUP_PL_EN)
1)每一位表示一個PIN,WKUP_PL_EN寄存器包含PA、PB的設置;
2)1:喚醒使能? ? 0:不喚醒使能;
2、超低功耗喚醒源使能(WKUP_PH_EN)
1)每一位表示一個PIN,WKUP_PH_EN寄存器包含PC、PD的設置;
2)1:喚醒使能? ? 0:不喚醒使能;
3、超低功耗喚醒類型控制寄存器(WKUP_TYPE_EN)
1)一般設置成0x00001001,表示使能GPIO、RTC的喚醒功能;
5)中斷相關寄存器
1、中斷類型控制寄存器(Px_INTP_TYPE)
1)2位描述1個PIN的中斷類型;
2)00:不產生中斷? ? 01:上升沿中斷? ? 10:下降沿中斷? ? 11:雙沿中斷
2、中斷狀態寄存器(Px_INTP_STA)
1)低16位有效;
2)對應的bit位為1代表產生中斷,否則代表無中斷。中斷標志置位后保持,直到向對應bit寫1,中
斷標志清除。
總結
- 上一篇: 2018互联网女皇报告:数据采集/共享/
- 下一篇: php实现微信jsapi支付(v2版本)