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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3249|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stm32寄存器版USART 配置筆記

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:677275 發(fā)表于 2020-4-26 20:54 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
USART的模式功能有很多本次配置的是最初級(jí)的模式,將數(shù)據(jù)發(fā)送到電腦串口助手上,以便于程序的調(diào)試.今日寫下配置步驟,以及調(diào)試的經(jīng)驗(yàn)總結(jié).
配置分為三個(gè)模塊,一者GPIO
二者USART
三者printf輸出重定向函數(shù)
硬件連接(PA9/TX,PA10/RX)

GPIO模塊
首先不僅要有個(gè)疑問,為何USART模塊不是GPIO模塊,也不用點(diǎn)亮LED,為什么要配置他那.原因很簡(jiǎn)單,因?yàn)殡m然不用GPIO點(diǎn)燈,卻需要RX,TX與外部通信,也就是GPIO引腳不是普通的GPIO,而是連接到USART的復(fù)用功能的引腳了.所以只要是內(nèi)部外設(shè)需要與芯片外步連接的話就需要GPIO配置成復(fù)用功能.
   具體來講只要用到了GPIO模塊就需要先將GPIO的時(shí)鐘打開.接下來才可以具體配置引腳.配置引腳配置哪個(gè)引腳?上一段說了,GPIO可以用到通用功能用來電燈等操作,還可以作用復(fù)用功能如USART,SPI等功能.不僅如此不要小看看這小小的芯片.USART等外設(shè)對(duì)應(yīng)(連接)著自己的固定的引腳,而且不是固定的一個(gè),根據(jù)引腳的多少不同可能對(duì)應(yīng)著兩個(gè)三個(gè)甚至四個(gè),這便是STM32的重映射功能.查看手冊(cè)USART1可用外部連接有(PA9/TX,PA10/RX),(PB6/TX,PB7/RX).
C8T6只有兩個(gè),F411有三個(gè),這樣一來就為PCB電路設(shè)計(jì)提供了方便.當(dāng)然這個(gè)外設(shè)就需要要有個(gè)控制器去選擇到底將USART模塊映射到哪里.這個(gè)控制額模塊就是AFIO模塊.所以復(fù)用的時(shí)候需要查看是否重映射了,如果是的話,要將其配置好.
以上兩段說了三個(gè)關(guān)鍵詞,通用GPIO的通用,GPIO的復(fù)用,GPIO的重映射.還有配置的兩個(gè)步驟一打開GPIOA或者B...的時(shí)鐘,二確定是否重映射,確定好硬件連接.
接下來便是配置具體的引腳.
本次USART1有兩個(gè),選擇了(PA9/TX,PA10/RX),確定了功能之后,要配置成輸入模式還是輸出模式當(dāng)然也已經(jīng)確定好了.但是輸入有浮空輸入,模擬輸入,上拉下拉到底選哪一個(gè)(輸入模式?jīng)]有復(fù)用功能的選擇),這個(gè)數(shù)據(jù)手冊(cè)里每一個(gè)外設(shè)模塊有,輸出也有.可以查看.至于速度的話,一般通信的引腳配置成最大的輸出速度,通用GPIO的時(shí)候配置成最小的速度即可,根據(jù)實(shí)際情況來.
這樣一來GPIO模塊就配置完成,配置的具體的代碼如下
void USART1_GPIO_Config()
{
        RCC->APB2ENR |=(1<<2); //開啟GPIOA的時(shí)鐘
        AFIO->MAPR &=~(1<<2); //UART1沒有重映像(TX/PA9,RX/PA10)

        GPIOA->CRH |= (3<<4); //PA9配置為50MHz輸出模式
        GPIOA->CRH |=(2<<6); //復(fù)用推挽輸出模式

        GPIOA->CRH &= ~(3<<8); //PA10配置為輸入模式
        GPIOA->CRH |=(1<<10); //浮空輸入模式模式
}

接下來就是配置USART模塊了,GPIO模塊一樣也需要先打開USART1的時(shí)鐘,GPIO模塊不同的是USART模塊在最后配置完成后還需要有個(gè)模塊使能.在配置完USART模塊的所有功能后需要將它使能.在我看來這是沒有必要的.時(shí)鐘都打開了,已經(jīng)說明我要用這個(gè)模塊了,為什么還要使能這個(gè)模塊那,有些多余.,技術(shù)手冊(cè)上寫的是清零USART的輸出和分頻器禁止.分頻器禁止了,難道輸入還可以.我要試一試.如果可以的話,不算雞肋,否則就是無用;
一頭一尾的兩條語句說完,接下來就是USART的具體配置了.USART是同步異步通信,這里的功能用到的是全雙工的異步通信方式.所以沒有用到是時(shí)鐘,只需要兩根線就可以把實(shí)現(xiàn)他的通信.
其配置的步驟與其通信的格式有關(guān).如數(shù)據(jù)位,校驗(yàn)位,停止位的位數(shù),還有發(fā)送和接收使能.還有波特率(計(jì)算.需要花費(fèi)點(diǎn)功夫),具體代碼如下.

void USART1_Init(uint32_t bound)
{
  float temp;
        u16 mantissa;
        u16 fraction;

        USART1_GPIO_Config();

        RCC->APB2ENR |=1<<14;//開啟UART1的時(shí)鐘

        USART1->CR1 &= ~(1<<12);//一個(gè)起始位八個(gè)數(shù)據(jù)位
        USART1->CR1 &= ~(1<<10);//禁止校驗(yàn)位
        USART1->CR2 &= ~(3<<12);//一個(gè)停止位

        USART1->CR1 |=(1<<2);//接收使能
        USART1->CR1 |=(1<<3);//發(fā)送使能

        temp=(float)(72*1000000)/(bound*16);        
        mantissa=temp;                                                         
        fraction=(temp-mantissa)*16;                 
        mantissa<<=4;
        mantissa += fraction;
        USART1->BRR=mantissa;  //設(shè)置波特率         

        USART1->CR1 |= 1<<13;//使能USART模塊
}
至于重定向函數(shù),上網(wǎng)上找到函數(shù),只需要把庫函數(shù)改成寄存器函數(shù)即可,本質(zhì)就是,printf調(diào)用fputc函數(shù)的時(shí)候,fputc把輸出的位置不定義到電腦屏幕,而是改變這個(gè)函數(shù),printf要輸出的的字符通過串口發(fā)送出去,打印到串口助手的屏幕上去.如下.




int fputc(int ch, FILE *f)
{

        USART1->DR = (unsigned char) ch;
        while((USART1->SR &(1<<7))==0);
        return(ch);
}


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文在线一区二区 | 在线播放亚洲 | 欧美国产日韩在线 | 影音先锋欧美资源 | 黑人巨大精品欧美一区二区免费 | 99精品视频免费观看 | 日本成人福利视频 | 久久久久久一区 | 久久久久久久久久久一区二区 | 亚洲午夜av久久乱码 | 成人免费在线视频 | 亚洲视频在线看 | 国产区精品在线观看 | 精品99爱视频在线观看 | 国产精品3区| 国产精品久久久久久婷婷天堂 | 国产农村妇女精品一二区 | 亚洲精品福利视频 | 久久精品成人热国产成 | 久久久久久亚洲 | 黄色网址大全在线观看 | 久久国产一区二区三区 | 亚洲狠狠丁香婷婷综合久久久 | 在线黄色影院 | 欧美激情久久久 | 瑟瑟免费视频 | 日本视频免费观看 | 欧美99 | 亚洲天堂免费 | 中文字幕精品一区二区三区在线 | 亚洲 欧美 另类 综合 偷拍 | 99精品国产成人一区二区 | 中文字幕免费视频 | 成人无遮挡毛片免费看 | 成人国内精品久久久久一区 | 一级欧美黄色片 | 久草精品在线 | 免费观看黄网站 | 免费观看日韩精品 | 国产免费xxx | 国产成人免费视频网站高清观看视频 |