? C语言很差, 学STM32会不会很难, 这也许是你的方法不对_互联网_蘑菇时尚站

C語言很差, 學STM32會不會很難, 這也許是你的方法不對

2019-10-09 來源:互聯網 編輯:小優 閱讀人數:596
這篇文章是緊接著上一篇的后續。疑問二、我C語言那么差學起來會不會很難?很多人都覺得,我的C語言那么爛,學STM32會不會...

C語言很差, 學STM32會不會很難, 這也許是你的方法不對(圖1)

這篇文章是緊接著上一篇的后續。

疑問二、我C語言那么差學起來會不會很難?

很多人都覺得,我的C語言那么爛,學STM32會不會很難。曾經的我也有這樣的想法,那是因為還沒真正的了解STM32的軟件編程。

用于STM32編程的語言有三種分別是匯編,C語言和C++。其實每一個STM32程序項目都使用了匯編,STM32的配置文件就是使用匯編語言編寫的,但是平時我們做的時候一般不用去管他,平時使用最多得的還是C語言,C++的也有但很少人用。STM32的方式也是有三種分別是寄存器方式,庫函數方式和寄存器庫函數混合方式。8051的單片機就是以寄存器的方式來編程的。而STM32其實也都是以寄存器的方式來編程的,但是STM32芯片內有幾百個寄存器,如果以這種方式來的話,每次都要找資料查看每一個寄存器的配置方法。這樣的話效率就慢了許多,所以就有了庫函數的方式。什么是庫函數?先解釋什么是函數吧,函數也是C語言的一個知識點,當初我在學C語言的時候,一開始我也不知道什么是函數,也許是老師沒說清楚,所以不理解,如果理解了就知道C語言中的函數也不過如此。下面舉幾個例子就明白了。比如說現在有兩個未知數x1和x2我要把兩個數相乘再加10。用數學表達就是:x1*x2+10=結果

不用函數的寫法:

Void main(void)

//先定義一個變量,用來保存計算結果

Int n=0。

n=x1*x2+10。

用函數的寫法:

先定義一個函數,函數的作用是要計算兩個未知數。得到結果。那么就要函數返回一個數。

函數為:

int jisuan(int x,inty)

return x1*x2+10。

//主函數,就是程序運行的開始。

void main(void )

Int n=0; //定義一個變量用來保存結果

n=jisuan(x1,x2) //這是函數的調用,這樣就得到結果了。

用函數的好處就是,我不需要知道你里面的計算過程,我只要知道我把值放進去就可以得到我需要的結果了。

在C語言中經常會用到printf;函數,這個函數的作用就是可以把我們想要知道的東西輸出又或者叫打印。你知道怎么去用這個函數,但是你不用知道它里面做了什么事情,就是這個道理。

回到之前哪里,所謂的庫函數就是把配置不同的寄存器的過程代碼用函數包裝起來,把這些函數整理到一個文件里面就成了庫。就叫庫函數。

以這種方式,雖然看起來代碼很多,但是很多東西都是有固定的一些參數,并不需要我們自己去想。給一個STM32引腳配置的例子就知道了:

void LED_Init(void)//這是一個函數,作用是把STM32使用到的引腳配置的代碼段包裝起來。

//這是一個聲明,跟其他的哪些變量聲明是一樣的。

GPIO_InitTypeDef GPIO_InitStructure。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOARCC_APB2Periph_GPIOD, ENABLE)//使能PA,PD端口時鐘

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0--PA.8 端口配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz

GPIO_Init(GPIOA,GPIO_InitStructure) //根據設定參數初始化

GPIO_SetBits(GPIOA,GPIO_Pin_8) //PA.8 輸出高

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1--PD.2 端口配置, 推挽輸出

GPIO_Init(GPIOD,GPIO_InitStructure) //推挽輸出 ,IO口速度為50MHz

GPIO_SetBits(GPIOD,GPIO_Pin_2) //PD.2 輸出高

上面這段代碼的內容都不用自己寫,把其他地方的復制過來把參數更改一下就可以了。下面這段代碼就是整個實驗的運行代碼:

int main(void)

delay_init; //延時函數初始化,就是一些配置的代碼段。

LED_Init; //這個就是上面的那個函數,在這里使用,高大上的叫法叫函數的調用,代碼運行到這里的話就會跑到上面哪里運行哪些代碼段

while(1)

LED0=0。

LED1=1。

delay_ms(300) //延時300ms

LED0=1。

LED1=0。

delay_ms(300)//延時300ms

所以說真正自己要寫的其實很少。不要被他的外觀所欺騙了,以為C語言差很難學。

我覺得知道以下幾個C語言的知識點就可以完成基礎的STM32的實驗:

要知道C語言執行的開端。所有的C語言程序都包含main函數(什么是函數待會再解釋)無論多么復雜的程序都是從main函數開始執行。所以我們在看一段代碼的時候可以先從main函數開始一步一步往下看,就知道它走的每一步都做了什么事情。

要知道C語言量意思。無非就是常量跟變量,而常用的變量就是整型(int)字符型(char)浮點型(float)這幾個。其實知道有這個東西就可以了,多用幾遍記住了。

C語言在于理解,不在于死記硬背。學好C語言就像玩一個闖關游戲,你首先要先了解一下規則,就盡情的闖關,一開始輸了,沒關系,從新再來,因為你有無數次復活的機會。

學好STM32也是在于理解,理解別人怎么使用哪些庫函數。要理解配置的完整流程。很多的STM32都不是閉卷考試,所以都是可以相互參考,相互復制。

本文相關詞條概念解析:

C語言

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言訂定了一套完整的國際標準語法,稱為ANSIC,作為C語言最初的標準。C語言之所以命名為C,是因為C語言源自KenThompson發明的B語言,而B語言則源自BCPL語言。

延伸 · 推薦

SM32入門-【第二篇】【木仔科技】

一、學習51單片機跟STM32方法的區別學習 51用寄存器,學習 STM32用庫。以前我們在學習 51的時候,用的是寄存器編程的方法,想要實現什么效果,直接往寄存器里面賦值,優點是直觀,簡單粗暴,知道。。。

stm32跑的四種嵌入式操作系統的特點及不足

STM32系列32位微控制器,基于ARM Cortex-M3處理器。它能支持32位廣泛的應用,支持包括高性能、實時功能、數字信號處理,和低功耗、低電壓操作,同時擁有個完全集成和易用的。基于STM平臺且。。。

相關閱讀

為全球用戶24小時提供全面及時的中文資訊

聲明:本站不提供任何視聽上傳、存儲服務,所有內容均來自正規視頻站點所提供的公開引用資源,如有侵權信息請聯系我們刪除

Top
华彩彩票-华彩彩票注册-华彩彩票网址 彩99-彩99平台-彩99官网 大发三分彩-首页 抢庄龙虎-首页 波兰好运彩-首页 大发一分pk10-首页