zigbee串口设置
原来串口初始化的软体是这样的voidinitUARTtest(void){CLKCON&=~0x40;//晶振while(!(SLEEP&0x40));//等待晶振稳定C...
原来串口初始化的软体是这样的
void initUARTtest(void)
{
CLKCON &= ~0x40; //晶振
while(!(SLEEP & 0x40)); //等待晶振稳定
CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频
SLEEP |= 0x04; //关闭不用的RC振荡器
PERCFG = 0x00; //位置1 P0口
P0SEL |= 0x0C; //P0用作串口
P2DIR &= ~0xC0; //P0优先作为串口0
U0CSR |= 0x80; //UART方式
UTX0IF = 0;
}
我要用P1.4,P1.5进行串口通信(uart0,位置1),修改如下
void initUARTtest(void)
{
CLKCON &= ~0x40; //晶振
while(!(SLEEP & 0x40)); //等待晶振稳定
CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频
SLEEP |= 0x04; //关闭不用的RC振荡器
PERCFG = 0x00; //位置1
P1SEL |= 0x30; //P1用作串口
P2DIR &= ~0xC0; //P1优先作为串口0
U0CSR |= 0XC0; //UART方式
UTX0IF = 0; //无中断未决
}
修改后为什么不能发送和接受数据,是不是修改有问题,麻烦帮我看看,非常感谢! 展开
void initUARTtest(void)
{
CLKCON &= ~0x40; //晶振
while(!(SLEEP & 0x40)); //等待晶振稳定
CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频
SLEEP |= 0x04; //关闭不用的RC振荡器
PERCFG = 0x00; //位置1 P0口
P0SEL |= 0x0C; //P0用作串口
P2DIR &= ~0xC0; //P0优先作为串口0
U0CSR |= 0x80; //UART方式
UTX0IF = 0;
}
我要用P1.4,P1.5进行串口通信(uart0,位置1),修改如下
void initUARTtest(void)
{
CLKCON &= ~0x40; //晶振
while(!(SLEEP & 0x40)); //等待晶振稳定
CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频
SLEEP |= 0x04; //关闭不用的RC振荡器
PERCFG = 0x00; //位置1
P1SEL |= 0x30; //P1用作串口
P2DIR &= ~0xC0; //P1优先作为串口0
U0CSR |= 0XC0; //UART方式
UTX0IF = 0; //无中断未决
}
修改后为什么不能发送和接受数据,是不是修改有问题,麻烦帮我看看,非常感谢! 展开
1个回答
展开全部
是这样的,TI官方的芯片手册上位置1是用P0.2/P0.3通信,位置2是用P1.4/P1.5通信,你要用P1.5/P1.4通信的话按照下边的方法改一下试试。PERCFG的第7位(从0开始到7),也就是最后一位PERCFG.U0CFG是USART0的I/O位置选择寄存器位,置0则以位置1作为串口,置1则以位置2作为串口,也就是P1.5/P1.4作为串口,所以要给PERCFG赋初值0x01;U0CSR修改了第6位,应该是为了实现双工通信吧,这样改可以;还有一点,P2DIR&=~0xC0这条语句算是可有可无了,因为芯片复位的时候这个寄存器的6、7两位就是0,除非你还想要用这个端口做其他用途,否则不需要初始化。
来自:求助得到的回答
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |