久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 26316|回復: 7
打印 上一主題 下一主題
收起左側

關于STM32F0管腳定義安排的兩三個話題

  [復制鏈接]
跳轉到指定樓層
樓主
ID:98618 發表于 2015-12-8 03:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
對于STM32系列芯片的管腳定義,因為絕大部分管腳除了默認的GPIO功能外,還可以有復用或額外功能,搞得很復雜。初次使用可能讓人犯暈。這里以STM32F0系列為例,來聊聊管腳相關的話題。

STM32F0芯片管腳除了個別電源或特定功能腳【比如復位腳、引導控制腳】外,芯片復位后,其它管腳的默認功能就是GPIO,同時各GPIO口往往具有其它復用功能或者額外功能。關于芯片管腳的說明在芯片的數據手冊里有詳細介紹。


一、芯片管腳默認功能、復用功能、額外功能界定話題

在芯片的數據手冊里都有關于各系列芯片的管腳描述表。如下圖表格可以看出,各個管腳有分3個功能塊,一個復位后默認功能【function after reset】,一塊復用功能【alternate functions】,還一塊就是額外功能【additional functions】。額外功能主要集中在做AD輸入腳、外部晶體腳及其它個別額外功能腳。

FIG1. 管腳描述表

默認功能沒啥好說的,就是芯片復位后的管腳功能或狀態。復用功能是通過配置GPIOx_AFR寄存器后選擇的功能。額外功能就是配置相關外設寄存器來選擇的功能,比方配置ADC使能某些通道、開啟USB應用等來使能相應管腳的額外功能。

FIG2 管腳復用功能對應表


二、有些管腳的定義安排貌似有沖突或重復的話題。以下圖中的I2C1管腳說明為例。



從上圖可以看出,對于48腳64腳的32F030芯片,I2C1復用功能腳似乎可位于兩個位置,咋看上去好像標錯了。讓人疑惑到底使用哪對腳。

那我們再看看有關復用功能寄存器對應表,結合上面FIG2 管腳復用功能對應表的PB6、PB7、PB8、PB9所對應的AF1那一欄,其實那4個腳可以有4種組合來實現I2C1的復用功能。可以分別是PB6\PB7,PB8\PB9,PB6\PB9,PB7\PB8四組中其中之一來做I2C1的通信功能腳。

我們可以用STM32CUBEMX工具來驗證測試下上面的理解。下面只列出了PB6\PB9,PB8\PB7的配置使用過程


void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)

{

GPIO_InitTypeDef GPIO_InitStruct;

if(hi2c->Instance==I2C1)

{

/* USER CODE BEGIN I2C1_MspInit 0 */

/* USER CODE END I2C1_MspInit 0 */

/**I2C1 GPIO Configuration

PB6 ------> I2C1_SCL

PB9 ------> I2C1_SDA

*/

GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_9;

GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;

GPIO_InitStruct.Pull = GPIO_PULLUP;

GPIO_InitStruct.Speed = GPIO_SPEED_LOW;

GPIO_InitStruct.Alternate = GPIO_AF1_I2C1;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)

{

GPIO_InitTypeDef GPIO_InitStruct;

if(hi2c->Instance==I2C1)

{

/* USER CODE BEGIN I2C1_MspInit 0 */

/* USER CODE END I2C1_MspInit 0 */

/**I2C1 GPIO Configuration

PB7 ------> I2C1_SDA

PB8 ------> I2C1_SCL

*/

GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8;

GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;

GPIO_InitStruct.Pull = GPIO_PULLUP;

GPIO_InitStruct.Speed = GPIO_SPEED_LOW;

GPIO_InitStruct.Alternate = GPIO_AF1_I2C1;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

像上面類似管腳安排的不I2C1,比方還有SPI等。總之,參照那個復用功能表結合你芯片管腳合理安排就好。當然有STM32CUBEMX配合也就更方便了。


三、一個跟管腳安排理解有關的應用異常話題

一個工程師反映把基于STM32F072R6主芯片學習板上的調試OK的USB 應用項目,移植到基于STM32F042F4的目標系統時,發現PC機無法發現設備。

STM32F072R6和STM32F042F4隸屬于STM32F0同一系列,二者主要差別在于有無DAC。其它外設基本一樣,具體到這2個型號,就是GPIO數目上及管腳安排上的細微差異。二者的數據手冊也明明白白的寫了都支持USB FS DEVICE功能。對于USB應用,二者除了可能管腳安排的差異外,內部驅動程序應該是一模一樣。

從手冊上看,64腳STM32F072R的USB外設功能管腳為PA11,PA12,屬于額外功能,即只需使能相關usb外設應用即可。


再看看下面20腳 STM32F042F4的相關管腳定義和安排。

顯然,管腳編號為17/18的功能描述有點另類,圖下方緊跟一句說明。大致意思PA11/PA12可以通過配置SYSCFG_CFGR1來進行重映射來取代PA9/PA10的功能。是個重要提醒,也不是特別明了,再細看芯片如下的管腳功能描述表。

我們上面第一個話題就提到32f0芯片管腳往往可能有三種功能,默認功能,復用功能及額外功能。結合上面表格,同樣的17、18腳,可能作為PA9 \PA10或后面一大堆的復用功能選擇之一,也可能作為PA11\PA12或者與之對應的復用功能及額外功能的選擇之一。

不過,要做PA11\PA12或相關復用功能或額外功能,必須首先使能SYSCFG外設并配置SYSCFG_CFGR1寄存器才行,否則基于PA11\PA12的默認功能及復用和額外功能都不會生效。

上面工程師碰到的問題剛好就出在這里,他們只是簡單的連接了芯片的第17腳18腳,此時USB_DM/USB_DP功能沒生效,即使你代碼寫得再漂亮,PC機還是無法識別USB設備。

我們不妨通過STM32CUBE MX配置工具來看看STM32F042F4芯片的管腳配置情況。不打開還好,咋一打開似乎讓你發現新大陸。

當打開基于STM32F042F4的STM32CUBE的配置界面時,發現跟USB有關的外設配置都是無效狀態,第一感覺就是它不支持USB功能。



再次打開STM32F042F4的數據手冊,上面分明寫了它是支持USB device的。結合前面的描述,感覺是不是CUBEMX里沒有打開相關外設或選型的配置。其實,STM32F0系列芯片里有個外設就是系統配置控制器【SYSCFG】,只有開啟了它,上面提到的SYSCFG_CFGR1寄存器配置才有意義。

具體到32f0的CUBEMX界面里就有個SYS的外設可以配置。當你點開那里時你會發現另一番天地。上面提到的一些東西都會赫然而現。

當在左邊外設欄的SYS和USB的適當地方勾選,右邊管腳配置圖立即出現USB通信腳位安排位置。

小結:

1、STM32芯片的管腳可能呈現三種功能狀態之一,默認功能、復用功能、額外功能。

2、stm32芯片外設往往很豐富,管腳復用安排往往很龐大復雜。數據手冊里有管腳說明及各類表格,查看時耐心、細心點。

3、STM32CUBEMX工具為我們的芯片管腳安排提供了巨大的方便,但再方便也不能完全不看數據手冊,比方上面提到第3個話題如果看數據手冊很可能會把自己帶進誤區。


【拋磚引玉 旨在交流,如有錯疏 歡迎賜教】

評分

參與人數 1黑幣 +5 收起 理由
ioe + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:276663 發表于 2018-1-27 11:51 | 只看該作者
寫的不錯。
回復

使用道具 舉報

板凳
ID:17809 發表于 2019-1-19 11:52 | 只看該作者
非常好.
回復

使用道具 舉報

地板
ID:402959 發表于 2019-2-22 21:56 | 只看該作者
    這么好的帖子怎么這么少點贊的啊,希望以后多出些這些帖子,讓剛入門的朋友少走彎路吧

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:287310 發表于 2019-10-5 17:05 | 只看該作者
總結內容到位
回復

使用道具 舉報

6#
ID:326949 發表于 2020-1-6 11:45 | 只看該作者
剛好用到PA11 PA12 和 PA9 PA10 復用 can
回復

使用道具 舉報

7#
ID:707079 發表于 2020-3-15 21:13 | 只看該作者
寫的非常好,對我剛學習的菜鳥來說,解決了一個心中很大的疑惑
回復

使用道具 舉報

8#
ID:87000 發表于 2020-4-3 15:35 | 只看該作者
標準庫里面怎么把SWDIO和SWCLK配置成普通的IO口了?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线视频免费观看 | 一区二区三区四区不卡视频 | 欧美久久一区二区三区 | 久久久久无码国产精品一区 | 成人影视网址 | 伊人免费在线观看高清 | 成人欧美一区二区三区在线播放 | 亚洲精品乱码8久久久久久日本 | 国产精品一区久久久 | 日韩一级免费观看 | 人人做人人澡人人爽欧美 | 中文日本在线 | 亚洲欧美视频一区 | 中文字幕在线观看第一页 | 国产小视频自拍 | 久久久国产一区二区三区四区小说 | 中文字幕亚洲一区 | 三级黄片毛片 | 在线色网址| 免费看国产一级特黄aaaa大片 | 中文字幕日韩在线 | 日韩一级二级片 | 久久99精品久久久 | 天天操 夜夜操 | 一区二区三区在线看 | 欧美日韩综合 | 黄色小视频入口 | 一区二区三区亚洲 | 欧美精品一区二区三区在线播放 | 国产一区二区三区四区 | 国产69久久精品成人看动漫 | 国产精品欧美一区喷水 | 国产高清精品在线 | 青青久久av北条麻妃海外网 | 九九综合 | 亚洲精品www| 国产一区免费 | 欧美国产日韩精品 | 中文字幕在线三区 | 日韩欧美国产精品一区二区 | caoporn国产精品免费公开 |