STM8L探索套件學(xué)習(xí)筆記-GPIO端口操作(一)
GPIO寄存器有:輸出寄存器(ODR),輸入寄存器(IDR),方向寄存器(DDR),控制寄存器1(CR1)和控制寄存器2(CR2).后面三個寄存器組和可以配置為8種GPIO的模式,如下圖:
而固件庫函數(shù)給出了8中模式,在上面的基礎(chǔ)上加入了輸出高/輸出低電平的狀態(tài)。
GPIO_Mode_In_FL_No_IT浮空輸入無中斷 | Input floating, no external interrupt |
GPIO_Mode_In_PU_No_I上拉輸入無中斷 | Input pull-up, no external interrupt |
GPIO_Mode_In_FL_IT浮空輸入有中斷 | Input floating, external interrupt |
GPIO_Mode_In_PU_IT上拉輸入有中斷 | Input pull-up, external interrupt |
GPIO_Mode_Out_OD_Low_Fast 開漏-輸出低-高速 | Output open-drain, low level, 10MHz |
GPIO_Mode_Out_PP_Low_Fast 推挽-輸出低-高速 | Output push-pull, low level, 10MHz |
GPIO_Mode_Out_OD_Low_Slow 開漏-輸出低-低速 | Output open-drain, low level, 2MHz |
GPIO_Mode_Out_PP_Low_Slow 推挽-輸出低-低速 | Output push-pull, low level, 2MHz |
GPIO_Mode_Out_OD_HiZ_Fast 開漏-輸出高阻-高速 | Output open-drain, high-impedance level, 10MHz |
GPIO_Mode_Out_PP_High_Fast 推挽-輸出高-高速 | Output push-pull, high level, 10MHz |
GPIO_Mode_Out_OD_HiZ_Slow 開漏-輸出高阻-低速 | Output open-drain, high-impedance level, 2MHz |
GPIO_Mode_Out_PP_High_Slow 推挽-輸出高-低速 | Output push-pull, high level, 2MHz |
下面是GPIO操作的應(yīng)用,GPIO寫操作---板上的兩個LED燈閃爍的代碼
void main(void)
{
/* Infinite loop */
GPIO_Init(LED1_PORT, LED1_PIN, GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(LED2_PORT, LED2_PIN, GPIO_Mode_Out_PP_Low_Fast);
while (1)
{
GPIO_ToggleBits(LED1_PORT, LED1_PIN);
Delay(0xFFFF);
GPIO_ToggleBits(LED2_PORT, LED2_PIN);
Delay(0xFFFF);
}
}
GPIO讀操作---查詢按鍵點亮LED
void main(void)
{
/* Infinite loop */
GPIO_Init(LED1_PORT,LED1_PIN,GPIO_Mode_Out_PP_Low_Fast);
//輸出低電平-高速10M
GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_No_IT);
//輸入浮空-無中斷
while (1)
{
if(GPIO_ReadInputDataBit(KEY_PORT,KEY_PIN))
GPIO_WriteBit(LED1_PORT,LED1_PIN,RESET);
else
GPIO_WriteBit(LED1_PORT,LED1_PIN,SET);
}
}
評論