娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月09日(星期日)

正在發生

2021年02月09日 | 基于S3C6410的ARM11學習(十七) 串口走起來

發布者:碼夢小子 來源: eefocus關鍵字:S3C6410  ARM11  串口 手機看文章 掃描二維碼
隨時隨地手機看文章

串口,可說是嵌入式開發中重要的開發工具了。通過串口,我們可以和開發板進行交互,同時也可以打印芯片內部的一些信息。


ARM11的串口使用也是比較簡單的。當然首先需要配置一下。

           clip_image002

以上是串口驅動開發的流程。首先對串口進行初始化,然后實現發送和接收。

      clip_image004

以上是串口的結構圖。對于接收和發送,都有一個64字節大小的FIFO。對于發送來說,如果使用FIFO的話,如果FIFO沒有滿,那么發送的數據首先發送到FIFO中,然后FIFO中的數據會自動的發送到發送移位寄存器中通過串口發送出去。接收也是一樣的道理。


簡單的使用就是不使用FIFO。數據直接發送到發送移位寄存器中發送。


下面就開始串口程序的設計了,


一、首先是對串口初始化。

1、  設置管腳為串口模式

串口端口和普通IO口是共用的。這個就要看OK6410的原理圖。

clip_image006clip_image008 

從原理圖中,接收是GPA0,發送時GPA1。所以第一步要先去配置管腳功能。

clip_image010

從GPIO章節得到,對于GPA0-1,配置為0010的時候,是串口的功能。


 所以,代碼就是

clip_image012

2、設置串口工作模式

我們知道,串口是有幾種模式的,數據位是幾位,有沒有奇偶校驗位,停止位是幾位。這個就通過ULCONx寄存器控制的。

clip_image014

我們使用的是uart0。配置的寄存器就是ULCON0。


配置成8位數據模式,沒有奇偶校驗位,1位停止位,普通的串口模式。


代碼就是

clip_image016

3、設置工作模式

串口是可以工作在三個模式下,一個是中斷模式,第二個是DMA方式,第三個就是輪詢方式。


這里,不使用DMA,也不使用中斷,就配置為輪詢模式。


這個配置是通過UCONx寄存器配置。同樣,這個寄存器有4個,對應串口0-3。這里配置UCON0寄存器。


主要關心以下幾位

clip_image018

clip_image020

 第一個是選擇串口的時鐘源。選擇PCLK。


后面兩個是配置串口的接收和發送模式,是工作在中斷或者輪詢,還是工作在DMA模式。配置為中斷或者輪詢。


代碼就為:

clip_image022

4、波特率設置

波特率是串口中最重要的設置了,如果這個波特率設置得不對的話,那么就不能正常的接收和發送數據了。


S3C6410的波特率配置通過兩個寄存器配置,一個配置整數,一個配置小數。

clip_image024

以上是配置串口波特率的公式。我們使用的是PCLK。使用的公式就是

clip_image025

當然這個除下來不一定能整除,就會有小數部分。所以就需要對小數處理。

num of 1’s in UDIVSLOTn/16 = 小數部分。


得到num of 1’s in UDIVSLOTn值,在查上面的表格,得到真正配置小數寄存器的數據。


舉例說明:

之前時鐘,將PCLK配置成66M。波特率采用115200。

clip_image027

        得到整數的值是34,小數是0.8。

clip_image029

查表,13對應0xDFDD。


所以,整數的寄存器配置為34。小數的寄存器配置為0xDFDD。

   clip_image031

UBRDIVx對應串口x的波特率設置的整數部分。UDIVSLOTx對應串口x的波特率設置的小數部分。


代碼就是:

clip_image033

以上,就是整個串口的初始化了。初始化后,我們就可以使用串口發送數據和接收數據了。

 

二、串口發送數據

這個就比較簡單了,和51單片機一樣,有一個寄存器用來保存發送的數據。當往這個寄存器寫數據,硬件會自動的將該數據通過串口發送出去。

clip_image035

不過呢,在發送之前,是需要檢查上一次數據是否發送結束。如果沒有發送結束的話,就需要等待。這個也是通過一個狀態寄存器來知道的。

clip_image037

從這個寄存器,就可以知道,發送數據是否完成以及是否接受到新數據。對于發送來說,就要檢查第二位是否為0。為0,說明上一次數據是發送結束的。

       代碼就是:

       clip_image038

三、串口接收

這個也是比較簡單了,同樣,有一個寄存器保存接收的數據,不過和51不一樣的是,51的發送和接收都是同一個寄存器SBUF。但是S3C6410是有兩個的。

clip_image040

同樣,在讀取數據之前,需要檢查下,是否有數據接收,有數據接收,才讀取數據。檢測之前數據發送說過,檢測狀態寄存器的第0位。


代碼就是

clip_image042

這個地方,在讀取中加入了一些處理,為了對接收到的數據進行回顯。每接收到一個數據,判斷該數據是否是ox0d(換行符n),0x0a(r)。如果是這兩個數據的話,就發送0x0d和0x0a。否則就將接收的數據發送出去。關于n和r大家可以自行百度下。

剩下就是在main函數中,編寫簡單的測試代碼即可。

clip_image044

先串口初始化,然后無限循環的讀取串口接收的數據,判斷在將數據回發。這樣,就可以在串口助手中看到,發什么,就顯示什么,因為芯片將發送的數據回發了回來。


對比STM32

 STM32的串口驅動開發和S3C6410的驅動開發也差不多,先對串口進行初始化,然后在寫串口發送和串口接收。原理都是一樣。


以下配置和S3C6410的串口配置一樣進行說明。8位數據位,沒有奇偶校驗位,1位停止位,波特率115200。

       clip_image046

來看看結構圖,這似乎是要比S3C6410的串口模塊要復雜些。不過基本的東西是一樣的,有發送移位寄存器,接收移位寄存器。發送有個數據寄存器,接收有個數據寄存器,不過對于STM32來說,發送和接收的寄存器是同一個。即這個寄存器即可發送,也可接收。


和S3C6410的串口流程一樣。

一、串口初始化

1、  管腳功能配置。

對于串口1,其使用的管腳是PA9和PA10。STM32的復用功能配置和S3C6410配置就不一樣了。S3C6410的GPIO配置中,有對GPIO的功能配置。但是STM32的GPIO配置就沒有。只能把GPIO配置成之前說的8種模式。

clip_image048

但是手冊中,也說明了,對于復用功能,管腳配置的功能應該是什么。

clip_image050

使用全雙工模式,發送配置為推挽復用輸出。接收配置為浮空輸入。

這里,就不說使用寄存器開發了,而是使用庫函數開發了。

clip_image052

這個地方要注意的是,對于管腳的復用功能,要打開對應復用功能的時鐘,這里是串口1的時鐘。另外還要打開總的復用功能時鐘,即AFIO時鐘。

clip_image054


二、串口初始化    

clip_image056

   clip_image058

12位要設置為0。表示是8個數據位。10位要設置為0,禁止校驗。同時也應該將13位給置1,表示串口使能。


位3和位2也要置1,表示使能接收和發送。


其他位是和中斷有關系的,這里沒有用到中斷,都設置為0。所以這個寄存器可以設置為0x200C。

       clip_image060

這個寄存器主要設置停止位的,將13:12設置為00。表示1個停止位。但是默認為這個值就是0。所以這個寄存器不用設置。


最后就是設置波特率了。當然也是有公式計算的。和S3C6410一樣,有整數部分和小數部分。這個就參考STM32中文參考手冊的524也就好了。不過STM32為我們提供了一個表,有了這個表,我們就不用去計算了。

clip_image062

對于串口1,是掛在APB2總線上的,而APB2總線的時鐘一般是配置為72M。對于19200,的波特率,72M下計算出來的值是234.735。


對于整數就是234。對于小數,就是0.735*16=11.76,取12。注意,這里得到小數后,不用再查表。

     clip_image064

將計算出來的值,填寫到該寄存器即可。可以看出,STM32的整數和小數合并成一個寄存器了。


以上操作,就對串口1進行初始化了。比較簡單吧。就配置幾個值就行了。

當然是用庫開發的話,就更簡單了。

clip_image066

三、串口發送

這個和S3C6410就一樣了。檢測上次數據是否發完,發完了就發下一個數據。檢測是通過檢測狀態寄存器。

clip_image068

   clip_image070

位6和發送有關系,位5和接收有關系。


當然有個發送寄存器。不過對于STM32,接收和發送是使用的同一個寄存器,和51一樣。

clip_image072

 發送的代碼就是

clip_image074

四、串口接收

接收的代碼就是

clip_image076

測試的方法和S3C6410的一樣,這里就不說了。

以上就是整個串口的開發。包括了S3C6410和STM32。可見,開發都是差不多一樣的,配置各種寄存器,讓串口初始化,然后再對串口進行讀寫。


一般來說,對于串口的讀,是通過中斷來讀的。這樣,CPU就不用一直判斷是否有數據接收而暫停,就可以去做其他很多事情。中斷的配置也是比較容易了,可以參考前面的外部中斷,對中斷進行配置。


有了串口,以后調試,就不用再靠led了。直接通過串口打印即可了。

關鍵字:S3C6410  ARM11  串口 引用地址:基于S3C6410的ARM11學習(十七) 串口走起來

上一篇:基于S3C6410的ARM11學習(十八) 移植printf和scanf
下一篇:基于S3C6410的ARM11學習(十五) MMU來了

推薦閱讀

????新浪科技訊 2月8日下午消息,華為在今日舉行的MWC預溝通會上宣布,2018年將投入50億元用于5G研發,同時2018年將發布5G基于NSA的商用版本和全套5G商用設備,2019年將推出5G麒麟芯片和智能手機。  華為5G產品線總裁楊超斌介紹了華為在5G研發方面的歷史和現狀。華為在2009年開始啟動5G研究與創新,2012年推出了關鍵技術驗證樣機,2013年投資6億美...
我們平時經常能看到概念車的渲染圖,非常帥氣,有科技感,但是真正能量產的卻幾乎沒有。其實概念車的設計理念真的非常出色,如果真的視線對于汽車真的算是一次改革了。就在近段時間,日本也是把一個概念車的設計理念變成了顯示,推出了首款無后視鏡的車型。無后視鏡車型來了,真不是畫蛇添足,你怎么看由于現在的后視鏡為了更大的視野被做的太大了,造成A...
stm8s008空間大小是8K 使用的時候會出現空間不夠用的情況,這個時候要對軟件進行一些設置,從而優化程序大小。1,修改優化等級,如下圖所示,這樣會優化掉無關的函數,將代碼優化到最大程度2,如果代碼有多個數組,而ram實際空間不夠使用的時候,修改下面的參數,最大修改為0xfff。3,當二維數組定義完報錯,無法容納的時候,在數組前面加上NEAR可解決報...
進入21世紀以來,在國家政策和資本市場的推動下,我國LED產業經歷了飛速發展的階段,目前已形成了完整的產業鏈,已經有40多家企業陸續上市,同時還有部分LED企業正在IPO排隊中,這其中也包括以LED封裝企業為主的旭宇光電(深圳)股份有限公司(以下簡稱:旭宇光電),其科創板IPO申請已獲得上交所問詢。據筆者觀察發現,旭宇光電通用照明光源業務占比超過...

史海拾趣

問答坊 | AI 解惑

歐姆龍V750讀取器平臺針對三個主要地區擴展RFID應用

歐姆龍日前推出新的V750讀取器平臺,這一平臺支持面向美國(915MHz), 歐洲(867MHz)和日本(953MHz)的全球性頻段。歐姆龍設計并生產的這一V750系列首次推向歐洲和日本市場,而在美國則作為現有的V740 EPC UHF讀取器產品的擴充。 V750讀取器平臺將帶來 ...…

查看全部問答∨

來看看dsp與FPGA

怎么說呢,最為外圍電路,特別是以DSP為體系的方式的時候fpga應用的很多,很廣,可以設計,編程,自由度大的很,現在就發幾篇論文,放在論文話題下面也是合適的啦!管理員看著辦吧! 哈工大的強人的!…

查看全部問答∨

某一個放大電路在輸入端加入的信號電壓值不變

某一個放大電路在輸入端加入的信號電壓值不變…

查看全部問答∨

evc開發基于對話框的小程序,如何改變菜單的背景顏色?

evc開發基于對話框的小程序,如何改變菜單的背景顏色? 在WinCe5.0模擬器下跑。 …

查看全部問答∨

用戶驅動無法加入操作系統

本人應用PB編寫了一個簡單的與硬件無關的流接口驅動程序,程序編譯無錯誤。通過更改dirs文件和該驅動的FileView中的platformbib和platform.reg文件,實現驅動在系統啟動時自動加載。編譯無錯誤。但在下載操作系統映像到實驗箱時,超級終端出現如下 ...…

查看全部問答∨

51單片機 + CC2420 模塊 SPI讀寫的問題

如題,根據資料進行SNOP空操作的時候,SPI方式存取。 需要讀取狀態字字節。 用示波器能看到SO口有波形輸出,但用程序讀不下來。 根據時序圖是按位邊寫邊讀,有編過這方面的大俠沒有?…

查看全部問答∨

8位單片機中大整型數如果要頻繁做除法和取模運算應該怎樣提高執行速度?

  8位單片機中大整型數如果要頻繁做除法和取模運算應該怎樣提高執行速度? 主要是解決數據的顯示問題,比如有個超過7位的數據在不斷的更新,數碼管也要不停的更新顯示,這其中的轉換會非常耗時(全是除法和取模運算),有沒有能提高速度 ...…

查看全部問答∨

請問哪有Tornado 2.2 for pcPentium的下載?

請問哪有Tornado 2.2 for pcPentium的下載?…

查看全部問答∨

大家好,我是菜鳥想學習WinCE編程,今天一看Lable怎么沒有Click事件啊,請幫幫我。

沒看過這個,今天一看是這種情況。如果我想得到上述lable的Text,怎么做呢,謝謝了…

查看全部問答∨

PIC和AVR如何選擇?畢業生工作如何找?

問這個問題顯得我比較懶哦::L 51會了!MSP430之前參加比賽時也學的差不多了!可是由于電腦并口好像壞了就沒有繼續玩!想學習下AVR或者PIC,但又不知道如何選擇!性能相近的AVR和PIC哪個單片機用的多啊在企業里?入門芯片如何選擇呢?我現在快要畢 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 额尔古纳市| 乐陵市| 静宁县| 辰溪县| 余干县| 乐昌市| 旌德县| 德格县| 江源县| 黄浦区| 峨边| 册亨县| 六安市| 望谟县| 灵台县| 宜兰县| 渝中区| 呼伦贝尔市| 小金县| 阜城县| 泉州市| 宜都市| 嵩明县| 盐池县| 大兴区| 凤城市| 凤台县| 铁岭县| 天祝| 左云县| 武川县| 龙江县| 桦川县| 卢湾区| 茌平县| 济源市| 遂平县| 大同市| 从江县| 连城县| 额济纳旗|