完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用的MSP430F149芯片
XT1用的32.768KHz晶振,XT2用的8M晶振。 当用32.768KHz作为串口主频率,然后设置9600波特率,没问题 当需要使用115200波特率时,设置XT2为主频率,其它都配置430波特率计算工具计算的,不过下载程序后,就不能正常通信,请问可能是什么问题? 或者那位能传一份115200波特率的串口程序给我学习下? 谢谢 |
|
相关推荐
3个回答
|
|
估计是配置问题
|
|
|
|
/**************************************************************
MSP430F149 有两个串口0与1 ***************************************************************/ #include "uart.h" #define CPU_CLK 8000000 //系统时钟8M u8 flag,flag1; /************************************************************** *函数功能:初始化UART0 *P3.4 TXD P3.5 RXD ***************************************************************/ #if UART0_ENable void UART0_Init(u32 baud) { u16 baudset; baudset=(u16)(CPU_CLK/baud); P3SEL |= BIT4 + BIT5; // P3.4,5 = USART0 TXD/RXD ME1 |= UTXE0 + URXE0; // 使能UART0的TXD和RXD UCTL0 |= CHAR; // 数据位为8bit UTCTL0 |= SSEL1; // 选择时钟源,SSEL0 32.768KHZ SSEL1 8M UBR00 = (u8)(baudset); // 初值整数部分低8位 UBR10 = (u8)(baudset>>8); // 初值整数部分高8位 UMCTL0 =(u8)((baudset-U0BR0)*8); //初值小数部分 UCTL0 &= ~SWRST; // Initialize USART state machine IE1 |= URXIE0; // 使能UART0的RX中断 _EINT(); // 打开全局中断控制位 } /************************************************************** 函数功能:从UART0发送一个字符 输入参数:Byte -- 要发送的字符 ***************************************************************/ void UART0_SendChar(u8 Byte) { while (!(IFG1 & UTXIFG0)); TXBUF0 = Byte; // 将要发送的字符送到数据寄存器 } /************************************************************** 函数功能:发送字符串函数 输入参数: s 要发送的字符串 **************************************************************/ void UART0_Send_Str(char *s) { while (*s) { UART0_SendChar(*s); s++; } } /************************************************************** 函数功能: 重定义fputc函数 备 注:使用printf需重定义fputc函数,并且 修改在General Options 中的Library Configuration 和Library Options ***************************************************************/ /*int fputc(int Byte, FILE *f) { while (!(IFG1 & UTXIFG0)); TXBUF0 = Byte; // 将要发送的字符送到数据寄存器 return Byte; }*/ //串口0中断函数 #pragma vector=UART0RX_VECTOR __interrupt void UART0_RX_ISR(void) { u8 c; IFG1&=~URXIFG0; c = RXBUF0; // 接收到数据了 if(c==0xBB) flag=1; } #endif //================================================================== /************************************************************** *函数功能:初始化UART1 *P3.6 TXD P3.7 RXD ***************************************************************/ #if UART1_ENable void UART1_Init(u32 baud) { u16 baudset; baudset=(u16)(CPU_CLK/baud); P3SEL |= BIT6 + BIT7; // P3.6,7 = USART0 TXD/RXD ME2 |= UTXE1 + URXE1; // 使能UART1的TXD和RXD UCTL1 |= CHAR; // 数据位为8bit UTCTL1 |= SSEL1; // 选择时钟源,SSEL0 32.768KHZ SSEL1 8M UBR01 = (u8)(baudset); // 初值整数部分低8位 UBR11 = (u8)(baudset>>8); // 初值整数部分高8位 UMCTL1 =(u8)((baudset-U0BR0)*8); //初值小数部分 UCTL1 &= ~SWRST; // Initialize USART state machine IE2 |= URXIE1; // 使能UART1的RX中断 _EINT(); // 打开全局中断控制位 } /************************************************************** 函数功能:从UART1发送一个字符 输入参数:Byte -- 要发送的字符 ***************************************************************/ void UART1_SendChar(u8 Byte) { while (!(IFG2 & UTXIFG1)); TXBUF1 = Byte; // 将要发送的字符送到数据寄存器 } /************************************************************** 函数功能:发送字符串函数 输入参数: s 要发送的字符串 **************************************************************/ void UART1_Send_Str(char *s) { while (*s) { UART1_SendChar(*s); s++; } } /************************************************************** 函数功能: 重定义fputc函数 备 注:使用printf需重定义fputc函数,并且 修改在General Options 中的Library Configuration 和Library Options ***************************************************************/ /*int fputc(int Byte, FILE *f) { while (!(IFG2 & UTXIFG1)); TXBUF1 = Byte; // 将要发送的字符送到数据寄存器 return Byte; }*/ //串口1中断函数 #pragma vector=UART1RX_VECTOR __interrupt void UART1_RX_ISR(void) { u8 c; IFG2&=~URXIFG1; c = RXBUF1; // 接收到数据了 if(c==0xBB) flag1=1; } #endif |
|
|
|
#ifndef __UART_H_
#define __UART_H_ #include "sys.h" //#include #define UART0_ENable 1 //如果设置为1则使能串口0,否则禁用 #define UART1_ENable 1 //如果设置为1则使能串口1,否则禁用 extern u8 flag,flag1; void UART0_Init(u32 baud);//串口0初始化 void UART0_SendChar(u8 Byte);//发送一个字符 void UART0_Send_Str(char *s);//发送字符串 void UART1_Init(u32 baud);//串口0初始化 void UART1_SendChar(u8 Byte);//发送一个字符 void UART1_Send_Str(char *s);//发送字符串 #endif |
|
|
|
只有小组成员才能发言,加入小组>>
3030个成员聚集在这个小组
加入小组2919 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3582 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2338 浏览 1 评论
4798 浏览 1 评论
2572 浏览 1 评论
1321浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3586浏览 2评论
2920浏览 1评论
1497浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 01:14 , Processed in 1.366662 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号