(一)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 型別。注意...