专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
读取TC35中的信息
2019-07-21 17:24
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
5283
7
1252
想通过MSP单片机读取TC35中的信息或者将单片机中的指令通过TC35发送出去。现在做的是它们之间最基本的串口测试,但总是有问题存在
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
zhanghqi
2019-07-22 03:31
#include<msp430x22x2.h>
#define uchar unsigned char
#define RxIn 90 //定义接收的数组长度为90
uchar AT[]="AT"; //握手信号
uchar SystemBuf[RxIn]; //储存出口接收数据
uchar Rx=0;
void UART_init (void);
void sendchar(uchar ch);
void sendstring(uchar *p);
/******************************************************************************************************************/
//////////////////////函数void UART_init;实现功能:对串口进行初始化////////////////////////////////////////////////
/******************************************************************************************************************/
void UART_init (void)
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ; //设置DCO为1MHz
DCOCTL = CALDCO_1MHZ;
UCA0CTL1 |= UCSWRST; //开启设置
UCA0CTL1 |= UCSSEL_2; //选择时钟源SMCLK
UCA0BR0 = 104; // 1MHZ/ 9600 = 104.166
UCA0BR1 = 0;
UCA0MCTL = UCBRS0; //0.17*8=1.33,四舍五入为1
P3SEL |= 0x30; //P3.4 /5 为USART0的TXD/RXD
P3DIR |= 0x10; //P3.4 为输出
UCA0CTL1 &= ~UCSWRST;
IE2 |= UCA0RXIE; // 使能USCI_A0的接收中断
_EINT();
}
/******************************************************************************************************************/
//////////////////////函数void sendchar(uchar ch);实现功能:发送一字节数据///////////////////////////////////////
/******************************************************************************************************************/
void sendchar(uchar ch)
{
while((IFG2& UCA0TXIFG)==0);
UCA0TXBUF = ch;
}
/******************************************************************************************************************/
//////////////////////函数void sendstring(uchar *p);实现功能:通过串口发送字符串///////////////////////////////
/******************************************************************************************************************/
void sendstring(uchar *p)
{
while(*p)
{
sendchar(*p);
p++;
}
sendchar(0x0D);
sendchar(0x0A);
}
/******************************************************************************************************************/
///////////////////函数 void main();实现功能:主函数,////////////////////////////////////////
/******************************************************************************************************************/
void main()
{
ADC10CTL0&=~ENC; //不能启动AD转换
UART_init(); //串口初始化
sendstring(AT); //发送AT握手信号
Delay(); //延时函数,具体形式不再给出,功能为延迟一定时间
}
/******************************************************************************************************************/
///////////////////中断函数void USART0_RX (void);实现功能:通过串口接收数据///////////////////////////////
/******************************************************************************************************************/
#pragma vector = USCIAB0RX_VECTOR
__interrupt void USA0RX_ISR (void)
{
if(Rx<RxIn)
{
SystemBuf[Rx] = UCA0RXBUF;
Rx++;
}
IFG2 &= ~0x01; //跳出中断函数
}
加载中...
查看其它7个回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include<msp430x22x2.h>
#define uchar unsigned char
#define RxIn 90 //定义接收的数组长度为90
uchar AT[]="AT"; //握手信号
uchar SystemBuf[RxIn]; //储存出口接收数据
uchar Rx=0;
void UART_init (void);
void sendchar(uchar ch);
void sendstring(uchar *p);
/******************************************************************************************************************/
//////////////////////函数void UART_init;实现功能:对串口进行初始化////////////////////////////////////////////////
/******************************************************************************************************************/
void UART_init (void)
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ; //设置DCO为1MHz
DCOCTL = CALDCO_1MHZ;
UCA0CTL1 |= UCSWRST; //开启设置
UCA0CTL1 |= UCSSEL_2; //选择时钟源SMCLK
UCA0BR0 = 104; // 1MHZ/ 9600 = 104.166
UCA0BR1 = 0;
UCA0MCTL = UCBRS0; //0.17*8=1.33,四舍五入为1
P3SEL |= 0x30; //P3.4 /5 为USART0的TXD/RXD
P3DIR |= 0x10; //P3.4 为输出
UCA0CTL1 &= ~UCSWRST;
IE2 |= UCA0RXIE; // 使能USCI_A0的接收中断
_EINT();
}
/******************************************************************************************************************/
//////////////////////函数void sendchar(uchar ch);实现功能:发送一字节数据///////////////////////////////////////
/******************************************************************************************************************/
void sendchar(uchar ch)
{
while((IFG2& UCA0TXIFG)==0);
UCA0TXBUF = ch;
}
/******************************************************************************************************************/
//////////////////////函数void sendstring(uchar *p);实现功能:通过串口发送字符串///////////////////////////////
/******************************************************************************************************************/
void sendstring(uchar *p)
{
while(*p)
{
sendchar(*p);
p++;
}
sendchar(0x0D);
sendchar(0x0A);
}
/******************************************************************************************************************/
///////////////////函数 void main();实现功能:主函数,////////////////////////////////////////
/******************************************************************************************************************/
void main()
{
ADC10CTL0&=~ENC; //不能启动AD转换
UART_init(); //串口初始化
sendstring(AT); //发送AT握手信号
Delay(); //延时函数,具体形式不再给出,功能为延迟一定时间
}
/******************************************************************************************************************/
///////////////////中断函数void USART0_RX (void);实现功能:通过串口接收数据///////////////////////////////
/******************************************************************************************************************/
#pragma vector = USCIAB0RX_VECTOR
__interrupt void USA0RX_ISR (void)
{
if(Rx<RxIn)
{
SystemBuf[Rx] = UCA0RXBUF;
Rx++;
}
IFG2 &= ~0x01; //跳出中断函数
}
一周热门 更多>