STM32學習第一課——新建工程與點亮LED燈

初學32還是有點激動的,第一次接觸到32位的MCU與之前所學的51單片機和430單片機都是有所不同的,STM32是用庫函數來寫程序的這樣一來不管是從代碼的編寫和移植都會方便很多。以下是今天所學的東西:
1.新建工程
個人覺得不用去新建一個工程再一步一步的添加各種文件夾和文件,完全可以去官網、論壇或貼吧等地方下載模板,其中大部分文件都可以直接複製過來只需要把你要編程的文件建好就OK,接着只需要把.c .h文件添加進去就可以使用了。(最好把你要寫的各種類型的.c.h文件都放在一個文件夾裏g個人習慣放在PROJECT文件夾裏)
工程裏添加文件
工程裏添加文件
點擊魔術棒,在C/C++的窗口添加所需要用的文件夾(.c.h文件)
點擊魔術棒,在C/C++的窗口添加所需要用的文件夾(.c.h文件)
點擊魔術棒旁邊的三色堆添加.c文件
d點擊魔術棒旁邊的三色堆添加.c文件
這樣工程就建好了。
2.點亮LED燈
STM32的學習需要有兩個寶:《STM32參考手冊》和《STM32固件庫使用手冊》這兩個文檔對32的學習是很有幫助的,有很多途徑可以下載。
想要點亮LED燈(所用芯片爲STM32F103RC的小黑板)就要了解GPIO的功能和各種模式關於GPIO的配置有八種:(1)GPIO_Mode_AIN 模擬輸入
(2)GPIO_Mode_IN_FLOATING 浮空輸入
(3)GPIO_Mode_IPD 下拉輸入
(4)GPIO_Mode_IPU 上拉輸入
(5)GPIO_Mode_Out_OD 開漏輸出
(6)GPIO_Mode_Out_PP 推輓輸出
(7)GPIO_Mode_AF_OD 複用開漏輸出
(8)GPIO_Mode_AF_PP 複用推輓輸出
GPIO_Speed_10MHz 最高輸出速率10MHz
GPIO_Speed_2MHz 最高輸出速率2MHz
GPIO_Speed_50MHz 最高輸出速率50MHz
其中最常用的是推輓輸出,推輓輸出:可以輸出高,低電平,連接數字器件。推輓輸出與開漏輸出是有區別的。開漏輸出:輸出端相當於三極管的集電極.
要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma)。這裏簡單說:開漏是0的時候接GND 1的時候浮空 推輓是0的時候接GND 1的時候接VCC
在配置IO口時必須要使IO口的時鐘使能RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);

以下爲點亮D0的代碼:

//FUNCTION:IO初始化
//DATA:20180913
void GPIo_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;//定義結構體變量     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);//IO口時鐘使能

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_2;//選用管腳
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//設置引腳輸出速率爲 2M
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//IO推輓輸出
    GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化外設寄存器
    GPIO_ResetBits(GPIOA, GPIO_Pin_8);//輸出0
    //GPIO_Init(GPIOD, &GPIO_InitStructure);
    //GPIO_ResetBits(GPIOD, GPIO_Pin_2);
}

下載進單片機就可以點亮了。
總結:其實32也不是很難學,要掌握方法才能事半功倍。在這裏有兩個問題要搞懂:
1.開漏輸出和推輓輸出的理解:
開漏是0的時候接GND 1的時候浮空 推輓是0的時候接GND 1的時候接VCC
2.對於引腳的速率設置問題:
2.1***對於串口,假如最大波特率只需115.2k,那麼用2M的GPIO的引腳速度就夠了,既省電也噪聲小*。
2.2 對於I2C接口,假如使用400k波特率,若想把餘量留大些,那麼用2M的GPIO的引腳速度或許不夠,這時可以選用10M的GPIO引腳速度。
2.3 **對於SPI接口,假如使用18M或9M波特率,用10M的GPIO的引腳速度顯然不夠了,
需要選用50M的GPIO的引腳速度。**
3.編譯過程中出現的警告
主函數大括號前後要空一行
.h文件定義時#endif也要前後空一行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章