stm32单片机c语言入门,STM32入门教程1,初学者入门,从零开始,使用keil建立一个简单的ST...
本文講述的是如何從零開始,使用keil建立一個簡單的STM32的工程,并閃爍LED燈,給小白看。
第零步,當然首先你得有一個STM32的板子,其IO口上接了一個LED。。。
第一步,建立一個文件夾0.0
第二步,打開keil,建立工程
在彈出來的對話框中選擇你所用的STM32的芯片。
在接下來彈出來的對話框中選擇是,這樣keil就幫我們建立好了啟動文件。
第三步,新建一個main.c文件,并添加到工程中。
點擊New按鈕,建立一個文本文件。
在建立的文本文件中輸入C中的main函數
點擊保存
保存后,將文件添加到工程中
第四步,點擊編譯
可以看到keil有報錯
錯誤信息為:沒有定義的符號SystemInit,這是因為在啟動文件中有調用SystemInit函數,但是我們沒有定義它,如下圖:
暫時不用理會上述啟動文件中匯編的含義,只需在main.c中添加該函數即可消除該錯誤。
修改后再編譯,程序沒有報錯了。至此,一個STM32的工程就建立完成了。
第五步,將下面的代碼復制粘貼
下面一段是對代碼的簡單講解,可不用太深入。
/
STM32 GPIO輸出高低電平的完整流程如下:
配置時鐘→配置IO口→IO口輸出高地電平
1,STM32的時鐘是可以PLL的。但是我這里為了簡化操作,就不配置,只使用默認的時鐘----內部8MZH振蕩器。
2,硬件上,我的LED燈是接到PA8。那么,我要怎么控制PA8呢?
STM32不能像單片機一樣,一上來就能操作IO口。要操作STM32的IO口,首先要配置IO口。
void LEDInit(void)
{
RCC->APB2ENR|=1<<2;
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X00000003;
}
其中RCC->APB2ENR|=1<<2;是使能GPIOA的時鐘。若是要使能GPIOB的時鐘則是RCC->APB2ENR|=1<<3;其他的以此類推。
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X00000003;
是配置PA8為推挽輸出,50MHZ。
若是要設置PA9則是:
GPIOA->CRH&=0XFFFFFF0F;
GPIOA->CRH|=0X00000030;
其他的以此類推,若是PA0~PA7則將CRH改為CRL就行。
若是要配置其他GPIO口,將GPIOA改成GPIOB,GPIOC。。。就行。,
3,我們知道51單片機是可以單獨控制每個IO口的,STM32也可以做到,這個機制叫做Bit-Bond。
參考《Cortex-M3權威指南》可知道,只要找到PA8輸出寄存器在Bit-Bond的地址,即可操作PA8的輸出。地址的計算方法如下圖:
《Cortex-M3權威指南》還給出了C語言宏定義的方法,我們可以直接使用。
/
將上述代碼輸入后,點開配置選項,配置如下:
勾上 Create HEX File
選擇J-Link下載工具
再次build,然后下載就大功告成啦。
綜上可以看出,若是不配置STM32的PLL,那么相對于51單片機,STM32閃爍LED燈只不過多了一個步驟----配置GPIO口為輸出而已。
總結
以上是生活随笔為你收集整理的stm32单片机c语言入门,STM32入门教程1,初学者入门,从零开始,使用keil建立一个简单的ST...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1059. Prime Factors
- 下一篇: bland c++_为什么要使用blan