|
轉(zhuǎn)自 :http://blog.sina.com.cn/s/blog_b44ad16b0101qzfm.html
剛剛接觸STM32,感覺(jué)很陌生,加上我水平一般,各種寄存器搞得我頭暈眼花,勉強(qiáng)看著文檔,照貓畫(huà)虎寫(xiě)了第一個(gè)程序,點(diǎn)亮流水燈程序。首先在用Keil編寫(xiě)的時(shí)候一共有四個(gè)文件夾,文件名分別是OBJ(存放編譯時(shí)的過(guò)程文件還有生成的.hex文件),USER(編譯程序時(shí)的用到的.c和.h),SYSTEM(程序里用到的幾個(gè)函數(shù),delay,sys,user),HARDWARE(你自己編寫(xiě)的.c和.h文件)。
有了這些就可以開(kāi)始編寫(xiě)流水燈程序了,先新建了一個(gè)名為L(zhǎng)ED.c的文件,要點(diǎn)亮的兩個(gè)LED分別對(duì)應(yīng)的IO口為PB5和PE5只要控制好這兩位就能實(shí)現(xiàn)所要的功能了,程序中的RCC(RESETand clockcontrol)是定義的一個(gè)結(jié)構(gòu)體,使能端口時(shí)鐘RCC->APB2ENR|=1<<3;在配置STM32外設(shè)時(shí),任何時(shí)候都要先使能該外設(shè)的時(shí)鐘,APB2ENR就是APB2總線上的外設(shè)時(shí)鐘使能寄存器在第三和第六位置一,

GPIOx->CRL(STM32的CRL和CRH用來(lái)控制IO口的方向,ODR用來(lái)控制輸出電平高低或者上下拉電阻,端口輸出數(shù)據(jù)寄存器,該寄存器課讀寫(xiě),r可以知道當(dāng)前端口的狀態(tài),IDR端口輸入數(shù)據(jù)寄存器)。
接著創(chuàng)建一個(gè)LED.H的文件,用到了#ifndef LED_H_//if notdefine #endif 有兩個(gè)關(guān)鍵的宏定義#define LED0PBout(5) #define LED1 PEout(5)使用的是位帶操作
|
|