利用STM32F103C8T6最小系統(tǒng)板點亮流水燈
后臺網(wǎng)友建議制作一個流水燈,正好發(fā)現(xiàn)自己有之前購買的STM32F103C8T6核心板,今天搭建一個流水燈,正好學習一下STM32 GPIO輸出如何實現(xiàn),將來驅(qū)動蜂鳴器、繼電器等都會使用的。
流水燈相當于計算機語言中的“Hello World”,照著做一遍,實現(xiàn)了它,基本你就入門了。
學習目標
STM32F103C8T6最小系統(tǒng)板的使用
面包板搭建流水燈電路的方法
將STM32F103RCT6工程模板修改為STM32F103C8T6的工程模板
熟悉STM32 單片機GPIO作為輸出的使用方法
STM32F103C8T6芯片簡介
根據(jù)STM32&STM8產(chǎn)品型號命名規(guī)則(參考:STM32單片機最小系統(tǒng)詳解)可知:
STM32F103C8T6這個命名中:
STM32代表STM32家族,32位MCU;
F代表產(chǎn)品類型為基礎型;
103代表特定功能為STM32基礎型;
C代表引腳數(shù)為48&49引腳;
8代表內(nèi)存容量為64KB;
T代表封裝為QFP;
6代表溫度范圍為-40到+85℃。
核心板原理圖
通過原理圖我們可知:
板子供電有兩種方式:
通過U3 USB-micro接口提供5V供電,然后經(jīng)過板載的LDO芯片轉(zhuǎn)為VCC3V3;
通過P2 接口,即SWD下載接口中的VCC3V3給核心板供電。
核心板上有兩個LED,其中一個為電源指示燈PWR,另外一個LED與PC13引腳相連,當PC13置高時,LED滅;當PC13置低時,LED亮;
核心板上的跳線是為了選擇啟動模式使用。我們?yōu)榱俗尦绦蛞灾鏖W存存儲器作為啟動區(qū)域,需要將BOOT0置低,BOOT1隨意,此種啟動模式是最常用的用戶FLASH啟動,為默認啟動模式;
核心板上的按鍵為RESET復位按鍵;
P2接口為SWD下載模式對應的引腳接口;
搭建流水燈電路
準備元器件
注意:
電阻使用的是2K,作為限流使用;
LED注意正負極,直插發(fā)光二極管,引腳長的為正極,短的為負極;如果引腳被剪過了,一樣長了,查看發(fā)光二極管管體內(nèi)部金屬極大小,金屬極較小的是正極,大的片狀的是負極。
搭建電路
按照如下原理圖搭建電路
搭建完畢效果圖
修改工程模板
在基于STM32固件庫的MDK5工程建立基礎上,將STM32F103RCT6工程模板修改為STM32F103C8T6的工程模板。
修改點:
替換啟動文件,將startup_stm32f10x_hd.s更換為startup_stm32f10x_md.s,startup_stm32f10x_md.s為中等容量產(chǎn)品使用的啟動文件,對應FLASH的大小范圍為:64K≤FLASH≤128K。
修改全局宏定義,將STM32F10X_HD修改為STM32F10X_MD。
更改使用的芯片型號
設置下載的Flash容量
注意:
網(wǎng)上說STM32F103C8T6和STM32F103CBT6 是在同一圓晶上制造的,但測試時,只測試手冊提供的參數(shù)范圍所包含的內(nèi)容,也就意味著 STM32F103C8T6也是128k Flash,只不過只測試了前面64k,然后打上 STM32F103C8T6標注(當然內(nèi)部就寫上 C8T6 的 ID);所以我們在添加Flash的時候,只能找到128K的STM32F103,而找不到64K的Flash。
代碼實現(xiàn)
設置PA5、PA6、PA7為輸出
GPIO_InitTypeDef GPIO_InitStructure;ENABLE);= GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;= GPIO_Mode_Out_PP;= GPIO_Speed_50MHz;&GPIO_InitStructure);
初始化GPIO為高電平,高電平的時候,LED滅
GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);
流水燈代碼具體實現(xiàn)
void Delay(u32 count){u32 i=0;for(;i<count;i++);}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);while(1){GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);Delay(1000000);Delay(1000000);Delay(1000000);GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);Delay(1000000);Delay(1000000);Delay(1000000);GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);Delay(1000000);Delay(1000000);Delay(1000000);}}
成果展示
資料獲取
微信公眾號后臺回復“流水燈”,可以下載工程源碼。
微信公眾號后臺回復“STM32F103核心板”,可以下載STM32F103C8T6核心板資料
推薦閱讀
STM32單片機最小系統(tǒng)詳解
基于STM32固件庫的MDK5工程建立
修改Keil工程名稱并添加其他模塊文件
喜歡請關注微信公眾號:程序員小哈
若覺得本次分享的文章對您有幫助,隨手點[在看]并轉(zhuǎn)發(fā)分享,也是對我的支持。
公眾號內(nèi)容面向在校大學生、電子愛好者、嵌入式工程師;
涉及電子制作、模塊使用、單片機技術、物聯(lián)網(wǎng)相關知識分享;
軟硬件全棧工程師,玩模塊,學硬件,帶你從0走到1
免責聲明:本文內(nèi)容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!





