先直接上代碼
#include "stm32f0xx.h"
#include "stm32_lib/inc/stm32f0xx_rcc.h"
#include "stm32_lib/inc/stm32f0xx_gpio.h"
int main(void)
{
//1、使能時鐘
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
//定義一個IO
GPIO_InitTypeDef PORT_LED;
//設置IO引腳,模式,輸出類型,速度
PORT_LED.GPIO_Pin=GPIO_Pin_4;//IO引腳,第4腳(個人的小板子PA4有連接LED)
PORT_LED.GPIO_Mode=GPIO_Mode_OUT;//模式:輸出
PORT_LED.GPIO_OType=GPIO_OType_PP;//輸出類型,推挽輸出
PORT_LED.GPIO_Speed=GPIO_Speed_10MHz;//輸出速率,10MHz
GPIO_Init(GPIOA,&PORT_LED);//正式初始化,PA口
GPIO_SetBits(GPIOA,GPIO_Pin_4);//輸出高電平
//GPIO_ResetBits(GPIOA,GPIO_Pin_4);//輸出低電平
while(1){}
}
1、說頭文件
既然有用到GPIO函數,就必須使用到gpio.h。而Cotex M0架構,所有外圍模塊的時鐘是可控制的,所以如果要使能IO口,必須要配置時鐘,于是需要應用時鐘相關的庫,所以有rcc.h。另外,作為芯片本身的頭文件,這個基本需求,于是有了stm32f0xx.h。其實,以上頭文件在配置Repository就已經在項目文件夾下面了。
2、說時鐘
關于STM32的時鐘,也是一個大內容,這里不詳細講解,請大家百度之。簡要介紹時鐘函數RCC_AHBPeriphClockCmd函數,這個函數可在stm32f0xx_rcc.c文件下查看到源代碼,本質就是寄存器配置。
看RCC相關的寄存器
3、再說GPIO
網上看到很多GPIO_InitTypeDef GPIO_InitStructure,其實這就是定義一個結構體,后面的結構體名稱是可以隨便取的,只要不和關鍵詞沖突,所以我定義了一個PORT_LED,接下來我們就要配置IO的各種參數了。具體有哪些參數呢,我們可以從GPIO_InitTypeDef 這個源代碼下面看一看。如下圖所示,有GPIO腳位、模式、速度、輸出類型、上下拉這幾個參數。
4、關于GPIO_pin,如果定義的IO是PA4,則對應就是GPIO_Pin_4,而MoDe、Speed、Otype、Pupd等我們也可以從gpio.h找到相關的取值。
5、以上參數配置完成后,調用GPIO_Init 正式加載配置。第一個參數為GPIOA、B、C、D等,第二個參數就是我們自己定義的結構體
GPIO_Init(GPIOA,&PORT_LED);//正式初始化,PA口
只有這個函數調用玩了,才算是正式加載了。
對于同一個A口或者B口等多個引腳,如果其輸入輸出、上拉下拉等參數完全一致,則在定義引腳的時候可通過“|”的符號來實現多個IO同時定義
如多個LED,可以PORT_LED.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_9類似
控制輸入輸出,set函數輸出高電平,reset函數輸出低電平,注意函數第一個參數表示端口ABCD等,第二個參數是引腳,這里不能采用我們自定義的什么PORT_LED、PORT_KEY1等。
GPIO_SetBits(GPIOA,GPIO_Pin_4);//輸出高電平
//GPIO_ResetBits(GPIOA,GPIO_Pin_4);//輸出低電平
6、關于GPIO輸入,則只要在GPIO參數配置時將GPIO_Mode_OUT改成GPIO_Mode_IN即可。
然后調用 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_X)函數來讀取IO
關于IO更多函數,可以查看stm32f0xx_gpio.h
上一篇:STM32(二)之GPIO操作(2)——通過按鍵控制LED燈的開關
下一篇:STM32入門學習之GPIO(STM32F030F4P6基于CooCox IDE)
推薦閱讀
史海拾趣
隨著技術產品的成功推出,Horizon開始積極拓展市場。公司首先在國內市場建立了完善的銷售和服務網絡,通過參加行業展會、舉辦技術研討會等方式提升品牌知名度。同時,Horizon也意識到國際市場的巨大潛力,逐步在海外設立分支機構,將產品推向全球市場。通過持續的市場推廣和優質的客戶服務,Horizon的品牌影響力逐漸增強,成為電子行業內備受矚目的新興企業。
在電子行業的發展過程中,Chemi-Con公司意識到單一產品線的局限性,并開始積極探索多元化發展的道路。公司不僅拓展了電容器產品的應用領域,還涉足了光電子機械等新興產業。此外,Chemi-Con還積極尋求與其他企業的合作,通過技術共享、資源共享等方式實現共贏。這種開放、合作的姿態使得Chemi-Con在行業中樹立了良好的形象,也為公司的長遠發展奠定了堅實的基礎。
在追求經濟效益的同時,晨晶電子也積極履行社會責任,致力于綠色環保事業。公司通過了ISO14001環境管理體系認證,嚴格遵守環保法規,實施清潔生產。同時,晨晶電子還積極推廣環保理念,倡導綠色消費,為保護環境、促進可持續發展做出了積極貢獻。
這五個故事不僅展示了晨晶電子在電子行業中的發展歷程和成就,也體現了其不斷創新、追求卓越的企業精神。在未來的發展中,晨晶電子將繼續秉承這一精神,努力成為電子行業的佼佼者。
FOSLINK公司自成立以來,始終將技術創新視為企業發展的核心驅動力。在早期,公司專注于研發高性能的電子元器件,如混合積體電路(IC)和單石數位積體電路(ASIC)。通過不斷的技術積累和優化,FOSLINK成功推出了多款具有行業領先地位的產品,不僅滿足了市場對高質量電子元器件的需求,還引領了行業的技術進步。這一系列的創新成果,使FOSLINK在電子行業中逐漸嶄露頭角,贏得了眾多客戶的信賴和好評。
面對日益激烈的市場競爭,Eurosil始終保持對研發的投入和關注。公司不斷引進新技術、新設備,加強研發團隊的建設,推動產品升級和產業升級。通過持續的創新,Eurosil在電子行業中保持了領先地位,并為客戶提供了更加先進、高效的產品解決方案。
隨著技術的不斷成熟,Eurosil開始將產品推向市場。公司憑借優質的產品和卓越的服務,逐漸在電子行業中樹立了良好的品牌形象。同時,Eurosil積極拓展國際市場,與多家國際知名企業建立了合作關系,將產品銷往全球各地。這一過程中,Eurosil不僅擴大了市場份額,也積累了豐富的國際經驗。
請問一下各位高手,利用DeviceEmulatorBSP.msi怎么制作自己需要的SDK并包含有模擬器啊? 網上找了一些資料,但是制作出來的SDK無法彈出模擬器出來!不知道怎么使用。… 查看全部問答∨ |
|
STATUS bootLoadModule ( FAST int fd, /* fd from which to read module */ FUNCPTR *pEntry /* entry point of module */ ...… 查看全部問答∨ |
|
下面是我的一段測試代碼: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespac ...… 查看全部問答∨ |
|
我用的是OMAPL138的芯片,網卡是KSZ8041FTL,用的平臺是CCS3.3,調試dsp,并且移植了Ucos操作系統,我把板子的網口和主機的網口用網線連起來,然后在主機的cmd中ping板子的IP地址,到目前為止就出現2次ping通,而且ping通了一下就超時了,一次丟包 ...… 查看全部問答∨ |
|
作為第一個在Hercules板塊中發帖滴人,怎么著也要發點兒資料! 上點兒介紹性的內容吧,好多人應該都不知道這是啥。 什么是 Hercules?Hercules 安全微處理器是基于 TI 針對汽車電子市場的 20 多年安全關鍵型系統專業技術、行業協作而發展成熟的硬 ...… 查看全部問答∨ |
1.概述 1.1解析ZigBee堆棧架構ZigBee堆棧是在IEEE 802.15.4標準基礎上建立的,定義了協議的MAC和PHY層。ZigBee設備應該包括IEEE802.15.4(該標準定義了RF射頻以及與相鄰設備之間的通信)的PHY和MAC層,以及ZigBee堆棧層:網絡層(NWK)、應用層和 ...… 查看全部問答∨ |