1.新建一個工程模板
2.GPIO口操作的步驟
(1)聲明一個結構體 GPIO_InitTypeDef GPIO_InitStructure;
這個結構體中包括GPIO_Pin 、GPIO_Mode、GPIO_Speed 。
(2)端口使能: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);
調用上述函數,函數參數第一個是你要使能端口,第二個是ENABLE,就是使能。如果其中用到幾個端口,在第一個參數中
用或運算“|”連接,就可以同時聲明幾個端口。
(3) GPIO_InitStructure.GPIO_Pin 端口配置,就是你要用哪個IO口
GPIO_InitStructure.GPIO_Mode 模式設置,表明IO口的功能是什么,在STM32中IO口有8種模式
GPIO_InitStructure.GPIO_Speed IO口速度設置,在STM32中IO口有3中速度
注: IO口的八種模式:1、輸入浮空 2、輸入上拉 3、輸入下拉 4、模擬輸入 5、開漏輸出 6、推挽輸出 7、推挽式復用功能 8、開漏復用功能
IO口的三種速度:10MHZ、2MHZ、50MHZ
(4)根據設定參數初始化GPIO口 GPIO_Init(GPIOA, &GPIO_InitStructure);
5、IO的高低電平操作
GPIO_SetBits 寄存器:BSRR
GPIO_ResetBits 寄存器:BRR
GPIO_WriteBit 寄存器:BSRR BRR
GPIO_Write 寄存器:ODR
這兩個調用的寄存器不同,功能也不同。區別在于
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 置高
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 置低
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
前者是直接對IO進行操作,而后者的輸入是對整個IO口,如PA口進行操作,你要那位高就在那位置“1”,所以第二組函數的第三個參數應該為一個十六進制的數。
一般情況下使用使用第一組比較方便。
void LED_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_2);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
}
上一篇:STM32基于固件庫學習筆記(12)LCD5110顯示
下一篇:STM32基于固件庫學習筆記(10)窗口看門狗
推薦閱讀
史海拾趣
設計資源 培訓 開發板 精華推薦
- 意法半導體緊湊型可配置車規負載驅動器具備安全引腳
- 美光宣布在美投資增至 2000 億美元,加建晶圓廠和 HBM 封裝設施
- AMD舉辦Advancing AI 2025大會:Instinct MI350系列GPU發布,35倍推理性能提升
- 特斯拉起訴前Optimus機器人工程師,指控其竊取商業機密
- Nordic Semiconductor將在MWC上海2025上展示前沿蜂窩物聯網解決方案
- SiC 市場的下一個爆點:共源共柵(cascode)結構詳解
- 香港科技大學工學院推出擬人化自動駕駛系統
- 現代摩比斯推出新型安全技術 防止追尾碰撞
- 研究人員開發新型機器人系統 利用AI賦能機器人技術
- 研究人員開發具有突破性觸覺靈敏度的機械手 可實現類人靈巧操作