国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

ARM入門筆記(6)

發布時間:2010-8-26 17:28    發布者:絕對好文
關鍵詞: ARM入門筆記
第六章 RS232串口通信

——串口USART0通訊實驗

一.實驗目的

利用串口調試軟件能夠正確接收到AT91SAM7S64發出的數據,AT91SAM7S64也能正確接收到調試軟件發出的數據。

二.實驗程序和參數設置

1>連接器選項設置和啟動代碼都與上個實驗相同
2>C語言的代碼

#i nclude "AT91SAM7S64.h"
#i nclude "Board.h"
unsigned char RBuff[256];   //定義接收緩沖區
unsigned char index;
int main(void)
{
unsigned int i, delay;
*AT91C_CKGR_MOR = 0x701; //使能主振蕩器和設置起振時間
*AT91C_PMC_MCKR = 0x01; //選擇Mster Clock is main clock, divided by 0  
*AT91C_PMC_SCER = AT91C_CKGR_MOSCEN;//使能系統時鐘寄存器的處理器時鐘
*AT91C_PMC_PCER = AT91C_ID_US0; //使能USART0時鐘
*AT91C_PIOA_PDR = US_RXD_PIN | US_TXD_PIN;//禁止該兩個管腳的I/O口功能
*AT91C_PIOA_ASR= US_RXD_PIN | US_TXD_PIN;//將該兩個I/O口分配給外圍A  
*AT91C_US1_MR =0x8c0;  //正常模式,時鐘為MCK,8位長度,無校驗,1位停止位,
*AT91C_US0_IDR  = 0xf3fff; //禁止所有UART相關的中斷
*AT91C_US0_BRGR = 30;  //設置波特率為38400Hz,AT91C_US0_BRGR為CD值
//Baudrate=SelectedClock/(8(2-Over)CD) = MCK/16CD = 18432000/(16*30) = 38400
*AT91C_US0_CR   = 0x15c; //復位接收器、發送器和狀態位;使能接收與發送
index = 0;
while (1)
{
  for (i = 0; i
  { //發送程序
   if ((*AT91C_US0_CSR) & AT91C_US_TXEMPTY) //判斷發送器是否為空
   {
    *AT91C_US0_THR = i; //空,則發送數據
   }
   for (delay = 0; delay
  }
  if ((*AT91C_US0_CSR) & AT91C_US_RXRDY)
  {//接收程序,在調試該部分時,要將發送部分程序注示掉
   RBuff[index++] = *AT91C_US0_RHR;
  }
}
}

三.出現的問題與解決方法

1> 狀態寄存器中的發送準備位(TXRDY)和發送空標志位(TXEMPTY)一直為0,表示發送器未準備好和緩沖區不空。

原因是發送器復位后還未使能。不能同時進行發送器(或接收器)復位與使能操作(*AT91C_US0_CR= 0x15c),這樣使能操作會無效,必須將它們分開,即先進行復位(*AT91C_US0_CR= 0x10c),再進行使能(*AT91C_US0_CR = 0x50)。

2> 串口接收、發送的數據不對

原因是系統主時鐘和分頻后的時鐘計算錯誤,引起波特率也計算錯誤。很有必要深入研究關于時鐘的產生、分頻及波特率計算等內容。

3> 每次從串口調試軟件收到的數據中,低四位正確,高四位錯誤。

原因是將“*AT91C_US0_MR =0x8c0;”寫成了“*AT91C_US1_MR =0x8c0;”,而引起通訊模式根本不對。可以說這是一個非常低級的錯誤,但它卻花費了我很久的時間才找到癥結所在。在找原因的過程中,使我對串口相關的(如各種時鐘的產生、波特率的計算等)內容有了更深刻的理解。

四.總結

在本實驗中串口為異步模式,波特率的計算如下式所示:

Baudrate = SelectedClock/(8(2-Over)CD)

其中在USART模式寄存器(AT91C_US0_MR)中設置SelectedClock為MCK;Over為1則上式變成如下所示:

Baudrate = SelectedClock/(8(2-Over)CD) = MCK/16CD

在Master Clock Register(AT91C_PMC_MCKR)中將MCK設置為Main Clock且不分頻,即為外部振蕩時鐘(接在XIN和XOUT管腳間的晶振)的頻率,因為外部晶振是18.432MHz,所以MCK就為 18432000,則上式變成如下所示:

Baudrate=SelectedClock/(8(2-Over)CD) = MCK/16CD = 18432000/(16*30) = 38400
本文地址:http://m.qingdxww.cn/thread-23773-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品久久免费动漫 | 青草香蕉精品视频在线观看 | 亚洲日本中文字幕天堂网 | 久久精品国产99精品最新 | 五月天精品视频在线观看 | 四虎影免看黄 | 在线观看麻豆视频 | 欧美日韩一区二区三区视频播 | 三角眉毛的男人好不好 | 日日摸日日| 色视频在线观看网站 | 日本一区二区三区四区视频 | 青青青国产免费线在 | 久久久精品免费国产四虎 | 四虎影在永久地址在线观看 | 香蕉精品在线 | 四虎成人永久地址 | 四虎影视国产精品亚洲精品hd | 免费国产一区二区在免费观看 | 成zzzwww日本免费 | 国产成人精品一区二区三区 | 弄农村老妇呻吟 | h版欧美一区二区三区四区 h版欧美大片免费观看 | 韩剧网最新的韩国电视剧免费观看 | 毛片韩国| 最近最新2019中文字幕6 | 精品日韩一区二区 | 麻豆传煤一区免费入 | 99久久免费国内精品 | 高清毛片在线看高清 | 日本精品a在线观看 | 久久成人国产精品二三区 | 狠狠操狠狠操 | 成年人黄色网址 | 日日免费视频 | 亚洲欧美在线观看 | 麻豆制片厂制作传媒在现观看 | 青青草国产精品久久久久 | 国产精品探花一区在线观看 | 国产成人精品福利网站人 | 欧美日韩中文在线 |