二 GPIO輸入輸出及延遲函式

2021-10-10 04:16:47 字數 1793 閱讀 4437

一.gpio

八種模式,四種輸入,四種輸出

1.gpio輸入

初始化

void

gpio_config

(void

)

2.gpio輸出

初始化

void

gpio_output_config

(void

)

二.延遲函式

#include

"stm32f10x.h"

static u8 fac_us=0;

//us延時倍乘數

static u16 fac_ms=0;

//ms延時倍乘數,在os下,代表每個節拍的ms數

//初始化延遲函式

//systick的時鐘固定為ahb時鐘的1/8

//sysclk:系統時鐘頻率

void

delay_init

(u8 sysclk)

//如果需要支援os.

//延時nus

//nus:要延時的us數.

//nus:0~204522252(最大值即2^32/fac_us@fac_us=21)

//延時nms

//nms:要延時的ms數

//nms:0~65535

//不用ucos時

//延時nus

//nus為要延時的us數.

//注意:nus的值,不要大於798915us(最大值即2^24/fac_us@fac_us=21)

void

delay_us

(u32 nus)

while

((temp&

0x01)&&

!(temp&(1

<<16)

));//等待時間到達

systick->ctrl&

=~systick_ctrl_enable_msk;

//關閉計數器

systick->val =

0x00

;//清空計數器

}//延時nms

//注意nms的範圍

//systick->load為24位暫存器,所以,最大延時為:

//nms<=0xffffff*8*1000/sysclk

//sysclk單位為hz,nms單位為ms

//對168m條件下,nms<=798ms

void

delay_xms

(u16 nms)

while

((temp&

0x01)&&

!(temp&(1

<<16)

));//等待時間到達

systick->ctrl&

=~systick_ctrl_enable_msk;

//關閉計數器

systick->val =

0x00

;//清空計數器

}//延時nms

//nms:0~65535

void

delay_ms

(u16 nms)

if(remain)

delay_xms

(remain)

;}

最後注意在主函式中新增

delay_init(180);
之後就可以在主函式裡面使用delay_us以及delay_ms啦

輸入輸出函式(二)

詳解getchar 函式 功能 1.接收乙個字元 2.可以用於清理緩衝區 3.使螢幕暫停 清理緩衝區的程式 while ch getchar eof ch n 為什麼要清理緩衝區呢?當我們輸入一行字串時,輸完會點回車進入下一行,回車會被寫入字串的結尾,往往,我們的字串中是不需要回車符的,所以需要清理...

通用輸入輸出口 GPIO

1概述 埠i o埠主要功能是用於內部微控制器和外設進行通訊的媒介。乙個埠最多有8個引腳。引腳每個引腳都是獨立的,也就是說當我們對其中乙個引腳進行操作的時候不會影響到其他引腳。我們可以對引腳單獨設定為數字輸入或者數字輸出。其中有些引腳還可以用著模擬輸入和和外設中斷。同一時刻只有乙個功能對映到同乙個引腳...

輸入 輸出函式

perror函式以一種簡單 統一的方式報告錯誤資訊。例如,如果乙個程式試圖從乙個並不存在的磁碟檔案讀取資料,作業系統除了提出發生了錯誤之外就沒有什麼好做的了。標準庫函式在乙個外部整形變數errno中保留錯誤 之後就把這個資訊傳遞給使用者程式,提示操作失敗的準確原因。void perror char ...