stm8s開發(fā)(二) GPIO的使用:點(diǎn)亮LED!
通用輸入輸出口(GPIO)是我們使用單片機(jī)最基本的,主要功能:
本文引用地址:http://www.ex-cimer.com/article/201709/364242.htm● 端口的各個(gè)位可以被單獨(dú)配置
● 可選擇的輸入模式:浮動(dòng)輸入和帶上拉輸入
● 可選擇的輸出模式:推挽式輸出和開漏輸出
● 外部中斷可以單獨(dú)使能和關(guān)閉
用戶手冊(cè)上描述:
每一個(gè)端口都有一個(gè)輸出數(shù)據(jù)寄存器(ODR),一個(gè)引腳輸入寄存器(IDR)和一個(gè)數(shù)據(jù)方向寄存器(DDR) 總是同相關(guān)的??刂萍拇嫫?(CR1)和控制寄存器2(CR2)用于對(duì)輸入/輸出進(jìn)行配置。任何一個(gè)I/O引腳可以通過對(duì)DDR,ODR,CR1和CR2寄存器的相應(yīng)位進(jìn)行編程來配置。
各種不同配置總結(jié)如下:
配置模式DDRCR1CR2配置模式上拉電阻
輸入000懸浮輸入 OFF
010上拉輸入ON
001中斷懸浮輸入 OFF
011中斷上拉輸入ON
輸出100開漏輸出 OFF
110推挽輸出
1x1輸出(最快速度10MHZ)
xxx真正的開漏輸出未采用
這里作為練習(xí)控制3個(gè)LED,分別是PA1,PA2,PD4,都設(shè)置為 推挽輸出 模式。
以下是初始化函數(shù):
//CTRL0 PA1
//CTRL1 PA2
//CTRL2 PD4
void GPIO_init(void)
{
PA_DDR|=0x03;
PA_CR1|=0x03;
PA_CR2|=0x00;
PD_DDR|=0x10;
PD_CR1|=0x10;
PD_CR2|=0x00;
}
需要控制IO口的電平,需要對(duì)于ODR寄存器進(jìn)行修改,讀表可得知1為高電平,0為低電平。
這里只需要對(duì)相應(yīng)的位進(jìn)行修改數(shù)值。
void CTRL0_HIGH(void)
{
PA_ODR|=0x01;
}
void CTRL0_LOW(void)
{
PA_ODR&=0xFE;
}
void CTRL0_Reverse(void)
{
PA_ODR^=0x01;
}
附上stm8s在IAR環(huán)境下的項(xiàng)目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代碼。
評(píng)論