国产探花免费观看_亚洲丰满少妇自慰呻吟_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++);   }  }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金阳县| 施秉县| 淮安市| 威宁| 旬阳县| 梓潼县| 峨山| 达日县| 广平县| 桐柏县| 寿宁县| 株洲县| 武鸣县| 长宁县| 沙坪坝区| 太原市| 沁源县| 大埔区| 南漳县| 佛学| 丘北县| 辽中县| 钦州市| 和田市| 东海县| 乐清市| 郧西县| 雅安市| 牟定县| 衡阳县| 宁国市| 天祝| 中西区| 科技| 高雄市| 大悟县| 湟源县| 霍邱县| 广水市| 克拉玛依市| 金阳县|