国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

05 單片機串口

2019-11-08 20:17:15
字體:
來源:轉載
供稿:網友
1.2530有兩個串口UART0和UART1。2.他們都有兩組備用位置。UART0:一般是P0_2,P0_3,另一組是P1_4和P1_5;UART1:一般是P0_4,P0_5,另一組是P1_2和P1_3;3.可以通過PERCGF寄存器選擇備用位置。4.當選擇好備用位置以后,要將相應的IO口設置為外設功能,而不是通用IO口功能。5.關于流控,奇偶校驗位,以及停止位數據位的設置采用默認配置方式。即將U0UCR = 0;6.控制寄存器在U0CSR。U0GCR和U0BAUD共同決定波特率。7.串口初始化流程:(1)選擇IO引腳(PERCFG)(2)設置IO工作模式(PxSEL)(3)設置收發模式(U0CSR)(4)設置停止位以及奇偶校驗位(U0UCR)(5)設置波特率(UxBAUD UxGCR)(6)開啟串口接收中斷(IEN0或者IEN2)(7)開啟總中斷。(EA=1)void UartCfg(){//串口0的備用位置1配置成波特率9600   PERCFG &=0xFE;//1111 1110 選中串口0的的備用位置1   P0SEL  |=0x0C;       //0000 1100 P0_2 p0_3為偏上外設功能   U0CSR |=0Xc0;   U0GCR =8;   U0BAUD=59;   EA=1;   URX0IE=1;}8.注意,發送中斷在IEN2,接收中斷在IEN0。不管是UART0還是UART1.9.串口發送:(1)將要發送的char類型變量賦值給UxDBUF(2)while(UTXxIF == 0),等待發送中斷標志變為1(3)UTXxIF = 0,清除中斷標志。10.串口接收:(1)清除接收中斷標志URXxIF = 0;(2)讀取UxDBUF到char類型的變量#PRagma vector=URX0_VECTOR__interrupt void sdfs(void){    URX0IF=0;//串口0來數據的標志位,硬件會置1,我們軟件要清0    ch=U0DBUF;//從接受寄存器里取字節存入變量ch    U0DBUF=ch;//把變量ch里的值賦給串口0發送數據寄存器    while(0==UTX0IF);    UTX0IF=0;}

串口模塊:

頭文件:

#ifndef __UART_H__#define __UART_H__extern void InitUart();   //初始化串口extern void Uart_Send_String(unsigned char *Data,int len);#endif

實現文件:

#include <ioCC2530.h>#define uchar unsigned char#define uint unsigned intvoid InitUart();              //初始化串口void Uart_Send_String(unsigned char *Data,int len);/****************************************************************    串口初始化函數     ***********************************************************/void InitUart(){    CLKCONCMD &= ~0x40; // 設置系統時鐘源為 32MHZ晶振    while(CLKCONSTA & 0x40);                     // 等待晶振穩定     CLKCONCMD &= ~0x47;                          // 設置系統主時鐘頻率為 32MHZ  PERCFG&=~0x01;   //有2個備用位置,0使用備用位置1;1使用備用位置2  P0SEL |= 0x0C;   //P0_2 RXD P0_3 TXD 外設功能 0000 1100   U0CSR |= 0xC0;  //串口接收使能  1100 0000 工作UART模式+允許接受  U0UCR |= 0x00;  //無奇偶校驗,1位停止位   U0GCR |= 11;           //U0GCR與U0BAUD配合       U0BAUD |= 216;       // 波特率設為115200    IEN0 |= 0X04;     //開串口接收中斷 'URX0IE = 1',也可以寫成 URX0IE=1;  EA=1;    }void Uart0_SendCh(char ch){    U0DBUF = ch;    while(UTX0IF == 0);    UTX0IF = 0;}/**************************************************************** 串口發送字符串函數    ****************************************************************/ void Uart_Send_String(unsigned char *Data,int len) { {   int j;   for(j=0;j<len;j++)   {      Uart0_SendCh(*Data++);   }  }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔西县| 兴业县| 青冈县| 五河县| 濮阳县| 博湖县| 资兴市| 株洲市| 年辖:市辖区| 吉安市| 崇信县| 平潭县| 江北区| 梓潼县| 黄浦区| 万源市| 正蓝旗| 竹山县| 渑池县| 灵石县| 台山市| 海伦市| 中阳县| 老河口市| 林周县| 含山县| 池州市| 牙克石市| 南昌县| 深圳市| 普宁市| 宝应县| 积石山| 亚东县| 年辖:市辖区| 山东省| 建宁县| 新安县| 琼中| 曲阳县| 调兵山市|