引言
在一些特殊情況下,如成品需要降本,原來的芯片買不到貨,需要將已經(jīng)做好的產(chǎn)品應(yīng)用程序有一款單片機(jī)移植到另一款單片機(jī)。本系列文章列出從現(xiàn)有的 STM32F1 器件移植到 STM32F0 器件所需的步驟,旨在幫助開發(fā)工程師節(jié)省更多開發(fā)時(shí)間。
3.7 GPIO 接口
與 F1 系列相比, STM32F0 GPIO 外設(shè)內(nèi)置了多個(gè)新特性,主要包括:
GPIO 映射到 AHB 總線上,可以獲得更佳的性能。
I/O 引腳復(fù)用器和映射:引腳通過多路復(fù)用器連接到片上外設(shè) / 模塊,該復(fù)用器一次只允許一個(gè)外設(shè)復(fù)用功能 (AF) 連接到 I/O 引腳。這樣便可確保共用同一個(gè) I/O 引腳的外設(shè)之間不會發(fā)生沖突。
I/O 配置的方式和特性更加豐富。
F0 GPIO 外設(shè)是一項(xiàng)全新的設(shè)計(jì),因此在結(jié)構(gòu)、特性和寄存器方面均不同于 F1 系列中的GPIO 外設(shè)。使用 GPIO 寫入 F1 系列的任何代碼都需要重寫后才能在 F0 系列上運(yùn)行。
01復(fù)用功能模式
STM32F1 系列
1、I/O 用作復(fù)用功能的配置取決于所使用的外設(shè)模式。例如, USART Tx 引腳應(yīng)配置為復(fù)用功能推挽,而 USART Rx 引腳應(yīng)配置為輸入懸空或輸入上拉。
2、為針對不同器件封裝(尤其是引腳數(shù)較少的器件)優(yōu)化外設(shè) I/O 功能的數(shù)量,可以用軟件將某些復(fù)用功能重新映射到其它引腳上。例如,可將 USART2_RX 引腳映射到 PA3(默認(rèn)重映射)或 PD6(軟件重映射)上。
STM32F0 系列
1、不論使用何種外設(shè)模式,都必須將 I/O 配置為復(fù)用功能,之后系統(tǒng)才能正確使用 I/O(輸入或輸出)。
2、I/O 引腳通過復(fù)用器連接到片上外設(shè)/模塊,該復(fù)用器一次只允許一個(gè)外設(shè)的復(fù)用功能 (AF)連接到 I/O 引腳。這樣便可確保共用同一個(gè) I/O 引腳的外設(shè)之間不會發(fā)生沖突。每個(gè) I/O引腳都有一個(gè)復(fù)用器,該復(fù)用器具有八路復(fù)用功能輸入(AF0 到 AF7),可通過GPIOx_AFRL 和 GPIOx_AFRH 寄存器對這些輸入進(jìn)行配置:通過配置 AF0 到 AF7 可以映射外設(shè)復(fù)用功能。
3、除了這種靈活的 I/O 復(fù)用架構(gòu)之外,各外設(shè)還具有映射到不同 I/O 引腳的復(fù)用功能,這可以針對不同器件封裝優(yōu)化外設(shè) I/O 功能的數(shù)量。例如,可將 USART2_RX 引腳映射到PA3 或 PA15 引腳上。
4、配置過程
(1)在 GPIOx_MODER 寄存器中將所需 I/O 配置為復(fù)用功能
(2)通過 GPIOx_OTYPER、 GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分別選擇類型、上拉/下拉以及輸出速度
(3)將 I/O 連接到 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中所需的 AFx
3.8 EXTI 中斷源選擇
在 STM32F1 中,通過 AFIO_EXTICRx 寄存器的 EXTIx 位選擇 EXTI 線源,而在 F0 系列中,通過 SYSCFG_EXTICRx 寄存器的 EXTIx 位完成這種選擇。
只有 EXTICRx 寄存器的映射發(fā)生更改,而 EXTIx 位的含義則保持不變。不過,由于最后一個(gè)端口為 F,因此 EXTIx 位的值范圍最大為 0b0101(在 F1 系列中,最大值為 0b0110)。
3.9 Flash 接口
下表介紹了 STM32F1 系列與 STM32F0 系列的 Flash 接口之間的區(qū)別,分組如下:
新接口,新技術(shù)
新架構(gòu)
新的讀保護(hù)機(jī)制,提供 3 個(gè)保護(hù)級別
因此, F0 Flash 編程過程和寄存器均不同于 F1 系列,而且寫入 F1 系列 Flash 接口的任何代碼都需要重寫后才能在 F0 系列上運(yùn)行。
3.10 ADC 接口
3.11 USART 接口
相較 F1 系列而言, STM32F0 系列內(nèi)置一個(gè)新的 USART 外設(shè)。其結(jié)構(gòu)、特性和編程接口均經(jīng)過修改,引入了全新的功能。
因此, F0 USART 編程過程和寄存器均不同于 F1 系列,因此,使用 USART 寫入 F1 系列的任何代碼都需要更新后才能在 F0 系列上運(yùn)行。
F0 USART 提供了卓越新增特性:
允許選擇獨(dú)立的時(shí)鐘源
具備 UART 功能并且能夠從低功耗模式喚醒,
方便的波特率編程,與 APB 時(shí)鐘重新編程無關(guān)。
智能卡仿真功能:T=0(支持自動(dòng)重試)和 T=1
Tx/Rx 引腳配置可交換
二進(jìn)制數(shù)據(jù)反向
Tx/Rx 引腳有效電平翻轉(zhuǎn)
發(fā)送/接收使能確認(rèn)標(biāo)志
帶標(biāo)志的新中斷源:
地址/字符匹配
塊長度檢測和超時(shí)檢測
超時(shí)特性
Modbus 通信
禁止超時(shí)標(biāo)志
出現(xiàn)接收錯(cuò)誤時(shí)禁止 DMA
從停止模式喚醒
有波特率自動(dòng)檢測功能
RS485 模式下發(fā)出驅(qū)動(dòng)器使能信號 (DE)
審核編輯:湯梓紅
評論