本帖最后由 wbsnty 于 2014-6-24 20:58 编辑
刚学STM8,在做串口通信实验的时候遇到点问题,想请教各位!
操作寄存器的
功能描述:
串口调试助手往MCU发送数据,MCU接到后再回发到串口调试助手上。
MCU的UART_RX,UART_TX,已分别接到CP2102的T和R上
写个测试程序,如果只是MCU往串口调试助手发送数据,PC上可以接受显示,但是当涉及到PC往MCU发送时,就不行了,调试了一个晚上还不行
在调试过程中,串口调试助手也一直往MCU发送数据了,就是没发回。。
请问是什么原因呢。。谢谢!!
对寄存操作,不用库函数实现。
代码:
include "IOSTM8S103F3.h"
void Uart_Init(void)
{
//设置波特率为9600,8个数据位,1个停止位,无奇偶验证
UART1_CR1=0X00;
UART1_CR2=0X00;
UART1_CR3=0X00;
UART1_BRR2=0X00;
UART1_BRR1=0X0D;
//允许接收,发送,开接收中断
UART1_CR2=0X2C;
}
void IO_Uart()
{
//初始化串口,PB5设置为推挽输出
PB_DDR|=0X20;
PB_CR1|=0X20;
PB_CR2|=0X00;
PB_ODR=0XF0;
}
void Uart1_Interrupt()
{
unsigned char c;
PB_ODR^=0X00; //测试进入中断标志,进入灯亮
c = UART1_DR; // 接收到数据了
while(!(UART1_SR & 0x20 == 1));
UART1_DR = c; // 再发回去
}
int main( void )
{
IO_Uart();
Uart_Init();
while(1)
{
if((UART1_SR | 0x40)==1) //判断RXEN=1;
{
Uart1_Interrupt();
}
}
}
|