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