六 使用庫函式點亮乙個LED

2021-10-10 19:43:22 字數 2653 閱讀 6448

(一)gpio外設的庫檔案

stm32f10x_gpio.c、stm32f10x_gpio.h

(二)gpio常用庫函式

1、初始化函式

void gpio_init(gpio_typedef* gpiox,gpio_inittypedef* gpio_initstruct)

功能:初始化乙個或多個io口(同一組埠)的工作模式、輸出速度即gpio的2個配置暫存器

gpio_inittypedef gpio_initstructure;//定義結構體變數

gpio_initstructure.gpio_pin=gpio_pin_0;//選擇你要設定的io口

gpio_initstructure.gpio_mode=gpio_mode_out_pp;//設定推挽輸出模式

gpio_initstructure.gpio_speed=gpio_speed_50mhz;//設定傳輸速率

gpio_init(gpioc,&gpio_initstructure);//初始化gpio

可以一次對多個管腳進行初始化,前提必須是它們的配置模式需一樣。比如:

gpio_initstructure.gpio_pin=gpio_pin_0|gpio_pin_1;
2、設定管腳輸出電平函式

void gpio_setbits(gpio_typedef* gpiox, uint16_t gpio_pin);

功能:設定某個io口為高電平(可同時設定同一埠的多個io)。底層是通過配置bsrr暫存器

void gpio_resetbits(gpio_typedef* gpiox, uint16_t gpio_pin);

功能:設定某個io口為低電平(可同時設定同一埠的多個io)。底層為配置bsrr暫存器

void gpio_writebit(gpio_typedef* gpiox, uint16_t gpio_pin, bitaction bitval);//寫乙個引腳

void gpio_write(gpio_typedef* gpiox, uint16_t portval);//寫全部引腳

功能:設定為輸出電平,很少用

3、讀取管腳輸入電平函式

uint8_t gpio_readinputdatabit(gpio_typedef* gpiox,uint16_t gpio_pin);

功能:讀取埠中的某個管腳輸入電平。底層是通過讀取idr暫存器。

uint8_t gpio_readinputdata(gpio_typedef* gpiox);

功能:讀取某組埠的輸入電平。底層是通過讀取idr暫存器。

4、讀取管腳輸出電平函式

uint8_t gpio_readoutputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin);

功能:讀取埠中的某個管腳輸出電平。底層是通過讀取odr暫存器。

uint8_t gpio_readoutputdata(gpio_typedef* gpiox);

功能:讀取某組埠的輸出電平。底層是通過讀取odr暫存器。

(三)使能gpio時鐘函式

void rcc_apb2periphclockcmd(uint32_t rcc_apb2periph, functionalstate newstate);

不同的外設呼叫的時鐘使能函式可能不一樣,因為不同的外設掛接的匯流排可能不一樣,gpio掛接在apb2匯流排上

例,使能gpioc埠時鐘:

rcc_apb2periphclockcmd(rcc_apb2periph_gpioc, enable);

在編寫程式之間要先配置模板庫,模板庫配置參見五、stm32韌體庫介紹及庫函式模板建立_並不傻的袍子-csdn部落格

在led.**件中,新增:

#ifndef _led_h

#define _led_h

#include "stm32f10x.h"

//定義led燈的引腳時鐘

#define led_port_rcc rcc_apb2periph_gpioc

//定義led燈的引腳

#define led_pin (gpio_pin_0|gpio_pin_1|gpio_pin_2|gpio_pin_3|gpio_pin_4|gpio_pin_5|gpio_pin_6|gpio_pin_7)

//定義led燈的埠名稱

#define led_port gpioc

//led燈初始化函式

void led_init(void);

#endif

在led.c檔案中新增

#include "led.h"

void led_init(void)

在main.c函式中新增

#include "stm32f10x.h"

#include "led.h"

int main()

}

點亮乙個LED燈

設計定義 二選一多路器 兩個輸入io,a b。可以是高電平,輸入按鍵按下時,led燈與a埠狀態保持一致,按鍵釋放時,led燈與b埠狀態保持一致 設計輸入 建立乙個project 編寫功能 input a 輸入埠a,b input b input key in 按鍵輸入,實現輸入通道的選擇 outpu...

第乙個程式點亮乙個LED燈

include 引用52包檔案 可以理解為命名空間 sbit p1 0 p1 0 定義p1管腳0 void main 主程式 c語言所必需要有的 以下非程式 上面的程式,首先引用reg52.h,這裡有對操作微控制器相關資料的封裝,方便使用者使用 接著,用p1 0這個sbit型別的變數,引用p1口的第...

點亮乙個LED之引數傳遞規則

1說明 實驗平台 jz2440 cpu s3c2440 2 arm thumb procedure call standard atpcs arm thumb過程呼叫標準 圖1 atpcs中各暫存器的使用規則和名稱 2.1資料棧結構 我們使用的棧結構為fd full descending 型別。注意...