STM32使用概述 遠端抄表系統設計

2021-06-07 12:15:27 字數 1357 閱讀 8579

在給導師的專案中首次用stm32設計了遠端抄表系統,stm32是st公司一款主頻為72mhz的32位微控制器,以其強大而方便函式庫獲得了無數開發者的青睞。根據效能不同可以分為從101-107tx\cx\rx\vx\zx幾個系列,豐富的外設資源、可達512k的flash容量以及越來越低的**,以後將可能完全取代8位微控制器。

1.選型

2.程式設計流程

對於stm32可以使用固定的初始化流程,如下所示,大部分的外設初始化已經做好了封裝,使用起來非常方便。

rcc_configuration();

delay_init(72); 

gpio_configuration();

gm8125_configuration();

nvic_configuration();

usart1_configuration();

usart2_configuration();

uart4_configuration(7200);

uart5_configuration(7200);

set_gm8125(1, 57600);

set_gm8125(2, 57600);

uart4_configuration(57600);

uart5_configuration(57600);

usart2_configuration(9600);

usart3_configuration(115200);

mmc_spi_config(); //spi3

i2c_mconfiguration();

tim3_configuration();//1s定時器

rtc_config();

其中比較值得提的一點就是中斷優先順序的初始化,因為使用的中斷比較多,各外設中斷優先順序最好不要巢狀,應該使用同一分組。與大多arm一樣,stm32採用4bit控制優先順序,分為搶占優先順序nvic_irqchannelpreemptionpriority以及相應優先順序nvic_irqchannelsubpriority。先對優先順序控制器進行初始化,確定採用幾bit用來分組搶占,幾bit用來響應,4bit最多可分為16組,每組乙個中斷,最少分為乙個組,每組16個中斷,優先順序高的組可以搶占優先順序低的組實現中斷的巢狀,同組內不能巢狀,但先響應優先順序高的中斷。在程式設計時,應盡量不出現中斷巢狀的情況,所以一共分為乙個組。

對於串列埠拓展晶元gm8125,一片可以拓展5個rs232口,母口是子口通訊速率的6倍,母口的波特率可設定。在使用過程中雖然只採用了stm32的乙個串列埠進行通訊,但是通過不同io的選擇可以實現5個子口互不干擾的收發資料,就和原生串列埠一樣使用。

STM32系統架構

這裡所講的 stm32 系統架構主要針對的 stm32f103 這些非互聯型晶元 stm32 主系統主要由 四個驅動單元 和四個被動單元 構成。四個驅動單元是 核心 dcode 匯流排 系統匯流排 通用 dma1 通用 dma2 四被動單元是 ahb 到 apb 的橋 連線所有的 apb 裝置 內部...

STM32系統時鐘

1 參考資料 stm32f1開發指南 庫函式版本 4.3小節 時鐘系統 stm32中文參考手冊v10 第六章 復位和時鐘控制 rcc 2 時鐘系統知識總結 1 stm32有5個時鐘源 hsi hse lsi lse pll hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 hse是高速外部...

stm32系統時鐘

hsi 約等於8mhz rc振盪器產生的時鐘 hse 外部時鐘 css 如果檢測到外部時鐘的損壞,自動切換到hsi 系統時鐘和rtc時鐘 均有三個 systick定時器 簡單的定時器,常用來做延時和心跳時鐘 24位的倒計時定時器 ctrl暫存器 其實滴答定時器很簡單,就是設定初值,然後延遲,最後就是...