不用開發板學習STM32
一般流水燈實驗
1
實驗環境介紹
? 實驗環境
本次實驗是通過Proteus+MDK一起模擬完成的。Proteus模擬實際電路,MDK編譯代碼。Proteus版本是8.9,MDK版本是5.21。需要注意的是,Proteus需要安裝8.8以上版本,器件庫里面要支持STM32F103C6。
? 實驗目的
通過點亮三個LED,我們俗稱的流水燈,來了解STM32的GPIO是怎么配置的。我們實驗設置了Systick,即系統滴答時鐘,延時也是通過這個滴答時鐘來配置的,可以通過這個實驗學習一下,怎么配置Systick,以及Systick中斷怎么用。
2
硬件電路
Proteus電路
? 主控:
STM32F103C6(本來想用C8的,但是Proteus只有C6,本質上只有Flash和SRAM大小的區別,所有沒有必要糾結)
? 時鐘:
沒有用外部晶振,因為Proteus只支持一種時鐘樹,所以這里采用內部晶振,做實驗夠了。
? 復位電路:
復位電路如圖,包含了上電復位電路一個10K電阻(圖上用的是100K實際應該都是可以的)+一個100nF電容。按鍵復位電路,包含了一個自復位按鍵,按下后,RST管腳就會短路到GND,MCU就會復位。
? IO說明:
我們利用PA1、PA2、PA3來分別控制3個LED燈,輸出低電平的時候,LED燈點亮。
3
代碼概述
MDK代碼目錄結構
? 代碼目錄概述:
APP文件夾:主要包含應用函數的.C文件。
BSP文件夾:主要包含底層硬件驅動的.C文件。
MDK-ARM文件夾:主要包含STM32的啟動的.S文件。
StdPeriph_Driver文件夾:主要包含ST官方提供的標準外設驅動.C文件(不是HAL庫哦)。
CMSIS文件夾:系統內核配置文件,標準庫自帶的。
? 代碼內容概述:
↓↓↓ GPIO初始化,先打開GPIOA的時鐘,然后把PA1、PA2、PA3設置成推挽輸出,代碼如下:
GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = LED1_Pin | LED2_Pin | LED3_Pin;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
↓↓↓ Systick也要初始化,這里滴答時鐘設置成1ms進一次中斷,代碼如下:
void bsp_InitSysTick(void){if (SysTick_Config(SystemCoreClock / 1000)){/* Capture error */while (1);}}
↓↓↓ 這里我們使用的是內部時鐘,所以在初始化外設后還要把MCU設置成使用內部時鐘,代碼如下:
void RCC_Configuration(void){RCC_DeInit();RCC_HSICmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);RCC_ADCCLKConfig(RCC_PCLK2_Div4);RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_10);RCC_PLLCmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while(RCC_GetSYSCLKSource() != 0x08);}
↓↓↓ 更詳細代碼及工程文件,公眾號回復關鍵字就能獲取!!
4
實驗結果展示
一般流水燈效果
可以看到,LED燈每間隔1S,輪流閃動,至此一般流水燈實驗完成!!!



【AD封裝】貼片鋁電解系列封裝(帶3D)
【AD封裝】USB Type-A座子系列(帶3D)
【AD封裝】TF(micro SD)卡座封裝大全(帶3D)
【AD封裝】2.4G PCB天線(量產用)
【AD封裝】RJ45座子(帶3D)
【AD封裝】DC3-2.54板端座子(帶3D)
【AD封裝】USB3.0板端座子(帶3D)
【AD封裝】LED發光二極管(帶3D)
【AD封裝】貼片插件電阻排阻(帶3D)
【AD封裝】插件壓敏電阻(帶3D)
【AD封裝】繼電器(帶3D)
【AD封裝】按鍵開關,撥碼開關,撥動開關(帶3D)
【AD封裝】915MHz天線,GPS天線,GSM天線,433MHz天線,13.56Hz天線,LTE天線
【AD封裝】FPC座子0.5mm間距1.0mm間距1.25間距(帶3D)
【AD封裝】貼片及插件二極管-整流橋(帶3D)
【AD封裝】插件電解電容,貼片電容,鉭電容,獨石電容(帶3D)
【AD封裝】VH3.96mm插件座子(帶3D)
【AD封裝】XH2.54mm座子插件貼片(帶3D)
【AD封裝】貼片插件晶振(帶3D)
【收藏】32個EMC標準電路!!
【收藏】你應該知道的拓撲結構-開關電源,都在這里!!
【收藏】開關電源你必須知道的專業名字(中英對照)!!
【收藏】優選4層板到12層板疊層經典設計方!!
【過癮】電機原理動態圖,停不下來!!
【過癮】各種烙鐵頭正確使用姿勢,你get到了嗎?
【較真】細說LDO旁路電容如何選!!
【較真】0歐姆電阻的妙用!!
【AD作品】STM32F103ZET6 mini板子
【開源】一文你就讀懂什么是呼吸機!
【開源】90款開源呼吸機匯總整理,帶鏈接,帶評分!!
【電子元器件知識普及】-電 阻
【電子元器件知識普及】-電容
【電子元器件知識普及】-二 極 管
【電子元器件知識普及】-電 感
【電子元器件知識普及】-變壓器知識大盤點
【電子元器件知識普及】-必須知道的天線知識及天線圖譜
【電子元器件知識普及】-美國線規AWG與公制對照表,拿走不謝~
點在看,鼓勵一下小編!!