最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

CW32 通用輸入輸出端口

2022-11-02 11:35 作者:武漢芯源半導(dǎo)體  | 我要投稿

GPIO的意思是通用輸入輸出端口,可通過(guò)軟件配置成輸入或者輸出端。即可以通過(guò)GPIO口輸出高低電平或者通過(guò)GPIO口讀入引腳狀態(tài)是高電平還是低電平。大部分引腳除了當(dāng)GPIO使用外,還可以復(fù)用為外設(shè)功能引腳。如UART外設(shè)與其他硬件進(jìn)行數(shù)據(jù)交互。

CW32L083的每組GPIO都有20個(gè)寄存器,除了基礎(chǔ)的配置寄存器、數(shù)據(jù)寄存器、位置位/清零寄存器、位清零寄存器、鎖定寄存器、復(fù)用功能寄存器外,還配置了位翻轉(zhuǎn)寄存器,中斷數(shù)字濾波寄存器等,讓操作更加快捷。同時(shí)提供完善的固件庫(kù)函數(shù),方便工程師快速開(kāi)發(fā)測(cè)試,增強(qiáng)可移植性。


GPIO端口可配置成8種工作模式

4種輸入模式

1.浮空輸入

2.輸入上拉

3.輸入下拉

4.模擬輸入

4種輸出模式

1.開(kāi)漏輸出

2.推挽式輸出

3.開(kāi)漏復(fù)用功能

4.推挽式復(fù)用功能


圖片
GPIO功能框圖

初始化GPIO可使用void GPIO_Init(GPIO_TypeDef ?*GPIOx, GPIO_InitTypeDef *GPIO_Init)函數(shù),此函數(shù)在cw32l083_gpio.c中有詳細(xì)的配置,其中的第一個(gè)參數(shù)GPIO_TypeDef是一個(gè)結(jié)構(gòu)體類(lèi)型,在cw32l083.h中有詳細(xì)定義,包含著每組GPIO的20個(gè)寄存器。



第二個(gè)參數(shù)GPIO_InitTypeDef也是一個(gè)結(jié)構(gòu)體,在cw32l083_gpio.h中可查看其定義。



下面舉一個(gè)簡(jiǎn)單的例子配置一個(gè)IO口翻轉(zhuǎn),可實(shí)現(xiàn)閃燈實(shí)驗(yàn)。



例程中使用PC02和PC03引腳進(jìn)行IO口翻轉(zhuǎn)實(shí)驗(yàn),官方CW32L083VCT6的評(píng)估板上這兩個(gè)引腳外接LED燈,可以看到LED周期閃爍的效果。

其中CW_GPIOC,GPIO_PIN_0以及GPIO_MODE_OUTPUT_PP都是定義在頭文件中的宏定義,如下面第一行為CW_GPIOC端口地址映射。

上面的例子是使用庫(kù)函數(shù)配置的,也可以用寄存器操作,具體步驟如下。

下面以CW32L083為例通過(guò)配置GPIO引腳來(lái)驅(qū)動(dòng)SPI2外設(shè),查閱CW32L083的用戶手冊(cè)可以得知, SPI2可以通過(guò)PA00,PA01,PA02,PA03復(fù)用實(shí)現(xiàn),這個(gè)就是上文提到的GPIO口的復(fù)用功能。



另外我們的GPIO支持外部中斷,具體的配置如下,如果有不清楚的小伙伴可以查看下節(jié)CW32中斷控制器,會(huì)有詳細(xì)講解。



上面的例程即可實(shí)現(xiàn)外部輸入中斷,PA01在接收到上升沿或者下降沿的信號(hào)的時(shí)候會(huì)進(jìn)入到中斷函數(shù)中去執(zhí)行相關(guān)的程序,具體的例程可以參考官方CW32L083的gpio_int_filter例子。

下面介紹的是CW32L083的GPIO所相關(guān)的函數(shù)及其功能。

1.void GPIO_SWD2GPIO(void);

將PA13/PA14 SWD設(shè)置成GPIO


2.void GPIO_GPIO2SWD(void);

將PA13/PA14設(shè)置成SWD


3.void GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pins);

鎖定指定引腳配置項(xiàng),可同時(shí)設(shè)置多個(gè)引腳


4.void GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pins);

GPIO去初始化,可同時(shí)設(shè)置多個(gè)引腳或單個(gè)引腳


5.void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);

GPIO 初始化,可同時(shí)設(shè)置多個(gè)引腳或單個(gè)引腳


6.void GPIO_ConfigFilter(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pins, uint32_t FltClk);

配置端口濾波


7.void GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pins, GPIO_PinState PinState);

設(shè)置指定引腳電平,可同時(shí)設(shè)置多個(gè)引腳


8.void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t Value);

設(shè)置指定引腳端口的輸出值


9.void GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pins);

翻轉(zhuǎn)指定引腳電平,可同時(shí)設(shè)置多個(gè)引腳


10.GPIO_PinState GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

獲取一個(gè)引腳的電平


以上是CW32通用輸入輸出端口的介紹。


CW32 通用輸入輸出端口的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
民丰县| 威远县| 轮台县| 章丘市| 牟定县| 兴和县| 庆云县| 晋宁县| 获嘉县| 金平| 禄劝| 南溪县| 库尔勒市| 云林县| 灌南县| 岑溪市| 镇宁| 松溪县| 峡江县| 新干县| 同江市| 永德县| 枣阳市| 泸溪县| 永靖县| 响水县| 府谷县| 镇江市| 新田县| 来凤县| 宾川县| 麻栗坡县| 赤峰市| 普安县| 望江县| 苏尼特左旗| 班玛县| 曲阳县| 崇左市| 西青区| 沾化县|