做cc2530 串口uart0发送字符串时候为什么串口助手中什么也没有
答案:1 悬赏:0 手机版
解决时间 2021-11-19 19:18
- 提问者网友:沉默菋噵
- 2021-11-18 19:10
做cc2530 串口uart0发送字符串时候为什么串口助手中什么也没有
最佳答案
- 五星知识达人网友:拾荒鲤
- 2021-11-18 19:27
CC2430包括2个串行通信接口 USART0 与 USART1,每个串口包括两个模式:UART(异步)模式、SPI(同步)模式,本节仅涉及UART模式)。两个USART具有同样的功能,可以设置在单独的I/O 引脚.
P0_2、P0_3配置为外设功能时:P0_2为RX, P0_3为TX.USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI 模式。两个USART具有同样的功能,可以设置在单独的I/O 引脚。
相关寄存器为UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLKCONCMD、CLKCONSTA,具体的参数参看datesheet。
CC2530配置串口的一般步骤:
1、 配置IO,使用外部设备功能。此处配置P0_2和P0_3用作串口UART0
2、 配置相应串口的控制和状态寄存器。
3、 配置串口工作的波特率。
寄存器具体配置如下:
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x0c; //P0_2,P0_3用作串口(外部设备功能)
P2DIR &= ~0xC0; //P0优先作为UART0
U0CSR |= 0x80; //设置为UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200 根据上面表中获得的数据
UTX0IF = 0; //UART0 TX 中断标志初始置位 0
#include
#include
typedef unsigned char uchar;
typedef unsigned int uint;
#define TX_SIZE 20
#define TX_STRING "Hello Zigbee "
char TxData[TX_SIZE]; //存储发送字符串
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i for (j=0; j<1070; j++);
}
void InitUart(void)
{
PERCFG = 0x00; //外设控制寄存器 USART 0 的 IO 位置:0 为 P0 口位置 1
P0SEL = 0x0c; //P0_2,P0_3 用作串口(外设功能)
P2DIR &= ~0xC0; //P0 优先作为 UART0
U0CSR |= 0x80; //设置为 UART 方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为 115200
UTX0IF = 0; //UART0 TX 中断标志初始置位 0
}
void UartSendString(char *Data, int len)
{
uint i;
for(i=0; i {
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
void main(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为 32MHZ 晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为 32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为 32MHZ
InitUart(); //调置串口相关寄存器
memset(TxData, 0, TX_SIZE); //数据清 0
memcpy(TxData, TX_STRING, sizeof(TX_STRING));//复制发送字符串到 TxData
while(1)
{
UartSendString(TxData, sizeof(TX_STRING)); //串口发送数据
DelayMS(1000); //延时 1 秒
}
}
P0_2、P0_3配置为外设功能时:P0_2为RX, P0_3为TX.USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI 模式。两个USART具有同样的功能,可以设置在单独的I/O 引脚。
相关寄存器为UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLKCONCMD、CLKCONSTA,具体的参数参看datesheet。
CC2530配置串口的一般步骤:
1、 配置IO,使用外部设备功能。此处配置P0_2和P0_3用作串口UART0
2、 配置相应串口的控制和状态寄存器。
3、 配置串口工作的波特率。
寄存器具体配置如下:
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x0c; //P0_2,P0_3用作串口(外部设备功能)
P2DIR &= ~0xC0; //P0优先作为UART0
U0CSR |= 0x80; //设置为UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200 根据上面表中获得的数据
UTX0IF = 0; //UART0 TX 中断标志初始置位 0
#include
#include
typedef unsigned char uchar;
typedef unsigned int uint;
#define TX_SIZE 20
#define TX_STRING "Hello Zigbee "
char TxData[TX_SIZE]; //存储发送字符串
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i
}
void InitUart(void)
{
PERCFG = 0x00; //外设控制寄存器 USART 0 的 IO 位置:0 为 P0 口位置 1
P0SEL = 0x0c; //P0_2,P0_3 用作串口(外设功能)
P2DIR &= ~0xC0; //P0 优先作为 UART0
U0CSR |= 0x80; //设置为 UART 方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为 115200
UTX0IF = 0; //UART0 TX 中断标志初始置位 0
}
void UartSendString(char *Data, int len)
{
uint i;
for(i=0; i
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
void main(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为 32MHZ 晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为 32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为 32MHZ
InitUart(); //调置串口相关寄存器
memset(TxData, 0, TX_SIZE); //数据清 0
memcpy(TxData, TX_STRING, sizeof(TX_STRING));//复制发送字符串到 TxData
while(1)
{
UartSendString(TxData, sizeof(TX_STRING)); //串口发送数据
DelayMS(1000); //延时 1 秒
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯