今天看到一篇很好的博文,,看這里:http://www.cnblogs.com/crazyxu/archive/2011/10/14/2212337.html
下面總結一下,加深一下理解。
要使用GPIO,首先要做五步工作:配置時鍾並使能,選擇引腳,配置引腳模式,配置引腳翻轉速度,最后調用庫函數初始化GPIO,將上面的配置寫入。
首先要了解GPIO的8種模式,真多:
(1)浮空輸入:In_Floating
(2)帶上拉輸入:IPU(In Push_Up)
(3)帶下拉輸入:IPD(In Push_Down)
(4)模擬輸入:AIN(Anolog In) 查了一下,anolog是模擬的意思。
(5)開漏輸出:OUT_PD(OD 代表開漏,既Open Drain,OC代表開集,Open Collect)
(6)推挽輸出:OUT_PP(PP代表推挽式,Push_Pull)
(7)復用功能推挽輸出:AF_PP(AF代表復用功能,Alternate-Fuction)
(8)復用功能開漏輸出:AF_OD
現在沒必要都知道,以后慢慢用到慢慢體會。
1、時鍾配置的時候剛開始就是復制模板,如下:
/*開啟GPIOB和GPIOF的外設時鍾*/
RCC_APB2PeriphClockCmd( macLED1_GPIO_CLK|macLED2_GPIO_CLK|macLED3_GPIO_CLK, ENABLE); //使能時鍾
RCC_APB2PeriphClockCmd()這個函數名字有點怪,它叫做使能或失能APB2外設時鍾,不用管它,直接復制過來就行。括號里面就是使能的外設時鍾。
2、好了,時鍾配置好了,后面可以選擇一下你要使用的管腳,多個管腳可以用或符號隔開。
/*選擇要控制的GPIOB引腳*/
GPIO_InitStructure.GPIO_Pin = macLED1_GPIO_PIN;
3、好了,下面是配置引腳模式;
/*設置引腳模式為通用推挽輸出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
4、下面就是設置引腳翻轉速度了吧。
/*設置引腳速率為50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
5、最后一步,調用通用的庫函數,將上面的配置寫入芯片,初始化GPIO;
/*調用庫函數,初始化GPIOB0*/
GPIO_Init(macLED1_GPIO_PORT, &GPIO_InitStructure);
到此為止,都屬於GPIO配置函數里面的內容,配置完GPIO,就可以讓他輸出高低電平了。
先使用庫函數,等庫函數用熟練了在去看寄存器的內容,、。
GPIO_SetBits(GPIOD, GPIO_Pin_9); 這是將9號引腳置為高電平,
GPIO_ResetBits(GPIOD, GPIO_Pin_9); 低電平。
主要內容大概就是這樣。