日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

CC2530的串口实验

發(fā)布時(shí)間:2025/6/15 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC2530的串口实验 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
CC2530的串口實(shí)驗(yàn)主要有編程主要有一下幾個(gè)步驟:

一、串口初始化函數(shù)(設(shè)置時(shí)鐘頻率-->選擇用來(lái)當(dāng)做串口的IO-->設(shè)置波特率-->發(fā)送中斷設(shè)為0)

二、字符串發(fā)送函數(shù)(U0DBUF填充字符-->等待串口發(fā)送完畢-->發(fā)送中斷標(biāo)志設(shè)為0,準(zhǔn)備下次發(fā)送

代碼1:

/**************************************************************************** * 文 件 名: main.c * 作 者: Andy * 修 訂: 2018-01-08 * 版 本: 1.0 * 描 述: 設(shè)置串口調(diào)試助手波特率:115200bps 8N1 * 會(huì)收到CC2530發(fā)過(guò)來(lái)的:Hello Zigbee ****************************************************************************/ #include <ioCC2530.h> #include <string.h>typedef unsigned char uchar; typedef unsigned int uint; #define TX_SIZE 20#define TX_STRING "Hello Zigbee "char TxData[TX_SIZE]; //存儲(chǔ)發(fā)送字符串/**************************************************************************** * 名 稱: DelayMS() * 功 能: 以毫秒為單位延時(shí) 16M時(shí)約為535,32M時(shí)要調(diào)整,系統(tǒng)時(shí)鐘不修改默認(rèn)為16M * 入口參數(shù): msec 延時(shí)參數(shù),值越大延時(shí)越久 * 出口參數(shù): 無(wú) ****************************************************************************/ void DelayMS(uint msec) { uint i,j;for (i=0; i<msec; i++)for (j=0; j<1070; j++); }/**************************************************************************** * 名 稱: InitUart() * 功 能: 串口初始化函數(shù) * 入口參數(shù): 無(wú) * 出口參數(shù): 無(wú) ****************************************************************************/ void InitUart(void) { PERCFG = 0x00; //外設(shè)控制寄存器 USART 0的IO位置:0為P0口位置1 P0SEL = 0x0c; //P0_2,P0_3用作串口(外設(shè)功能)P2DIR &= ~0XC0; //P0優(yōu)先作為UART0U0CSR |= 0x80; //設(shè)置為UART方式U0GCR |= 11; U0BAUD |= 216; //波特率設(shè)為115200UTX0IF = 0; //UART0 TX中斷標(biāo)志初始置位0 }/**************************************************************************** * 名 稱: UartSendString() * 功 能: 串口發(fā)送函數(shù) * 入口參數(shù): Data:發(fā)送緩沖區(qū) len:發(fā)送長(zhǎng)度 * 出口參數(shù): 無(wú) ****************************************************************************/ void UartSendString(char *Data, int len) {uint i;for(i=0; i<len; i++){U0DBUF = *Data++;//將數(shù)據(jù)填充到串口數(shù)據(jù)寄存器while(UTX0IF == 0);//等待串口發(fā)送完畢UTX0IF = 0; //將串口中斷置為0,準(zhǔn)備下一次的發(fā)送} }/**************************************************************************** * 程序入口函數(shù) ****************************************************************************/ void main(void) { CLKCONCMD &= ~0x40; //設(shè)置系統(tǒng)時(shí)鐘源為32MHZ晶振while(CLKCONSTA & 0x40); //等待晶振穩(wěn)定為32MCLKCONCMD &= ~0x47; //設(shè)置系統(tǒng)主時(shí)鐘頻率為32MHZ InitUart(); //調(diào)置串口相關(guān)寄存器memset(TxData, 0, TX_SIZE); //數(shù)據(jù)清0memcpy(TxData, TX_STRING, sizeof(TX_STRING)); //復(fù)制發(fā)送字符串到TxDatawhile(1){UartSendString(TxData, sizeof(TX_STRING)); //串口發(fā)送數(shù)據(jù)DelayMS(1000); //延時(shí)} }

代碼2:

#include <ioCC2530.h> #include <string.h> #define YLED P1_0 #define BLED P1_1 #define LIGHTOPEN 1 #define LIGHTCLOSE 0 #define uint unsigned int #define uchar unsigned char void Delay(uint n); void Init_UsartSend(); void Uart0_Send_String(char *Data,int len); char Txdata[25]="hello world"; /************************** *@ brief 延時(shí)函數(shù) **************************/ void Delay(uint n) { uint i; for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); } /************************** *@brief 串口及IO口的初始化函數(shù) **************************/ void Init_UsartSend() { P1DIR |= 0x03; //P1.0和P1.1設(shè)置為輸出 YLED = LIGHTOPEN; BLED = LIGHTOPEN; CLKCONCMD &= ~0X40; //設(shè)置系統(tǒng)時(shí)鐘源為32MHz晶振 while(CLKCONSTA&0X40); //等待晶振穩(wěn)定 CLKCONCMD &= ~0X47; //設(shè)置系統(tǒng)主時(shí)鐘頻率為32MHz PERCFG = 0X00; //設(shè)置外設(shè)控制為P0 P0SEL = 0X3C; //選擇P0.2,P0.3,P0.4,P0.5作為串口 P2DIR &= ~0XC0; //P0優(yōu)先級(jí)作為UART0 U0CSR |= 0X80; //UART方式 U0GCR |= 9; U0BAUD |= 59; //波特率設(shè)置為19200 UTX0IF |= 0; //UART0 TX 中斷標(biāo)志初始置為0 } /************************** * @brief 串口發(fā)送函數(shù) * @param Data - 數(shù)據(jù)指針 len - 數(shù)據(jù)長(zhǎng)度 **************************/ void Uart0_Send_String(char *Data,int len) { uint i; for(i=0;i<len;i++) { U0DBUF = *Data++; //將數(shù)據(jù)填充到串口數(shù)據(jù)寄存器 while(UTX0IF==0); //等待串口發(fā)送完畢 UTX0IF=0; //將串口中斷置為0,準(zhǔn)備下一次的發(fā)送 } } /************************ * @brief 主函數(shù) ************************/ main() { uchar i; Init_UsartSend(); Uart0_Send_String(Txdata,25); for(i=0;i<25;i++) { Txdata[i] = ' '; } strcpy(Txdata," 我愛(ài)你 "); /*一直使用串口發(fā)送數(shù)據(jù)*/ while(1) { Uart0_Send_String(Txdata,sizeof(" 我愛(ài)你 ")); Delay(50000); BLED=!BLED; Delay(50000); Delay(50000); } }

總結(jié)

以上是生活随笔為你收集整理的CC2530的串口实验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。