风-417456 发表于 2015-6-12 10:42:32

STM8L051复用PC5,PC6脚做串口无输出

#define Uart_TX 5
#define Uart_RX 6

void Uart_IO_Init(void)
{
        PC_DDR &= (~(1<<Uart_TX)) & (~(1<<Uart_RX));
        PC_CR1 |= (1<<Uart_TX) & (1<<Uart_RX);
        PC_CR2 &= (~(1<<Uart_TX)) & (~(1<<Uart_RX));       //IO配置上拉输入
}

void Uart_Init(void)
{
        Uart_IO_Init();
       
        SYSCFG_RMPCR1 |= 0x20;   //复用PC5,PC6为串口
       
        USART1_CR1 &=~(1<<2) & ~(1<<1);        //8位数据,关闭奇偶校验
        USART1_CR1 &= ~(1<<4);
        USART1_CR3 &= (~(1<<4)) & (~(1<<5));                //1位停止位
        USART1_BRR2 = (unsigned char)(((2000000/9600)>>8) & 0xf0);                        //
        USART1_BRR2 |= ((unsigned char)(2000000/9600) & 0x0f);
        USART1_BRR1 = ((unsigned char)(2000000/9600)>>4);       
       
       
        USART1_CR2 |= (1<<2) | (1<<3) ;                        //使能接收发送
       
}

以上是我串口配置,发送数据时,TX脚上用示波器观察没有输出,是配置上还有问题吗?

ts2000 发表于 2015-6-12 13:42:16

学习一下。没用过L系列的

风-417456 发表于 2015-6-12 15:59:49

单纯引脚配置错误照成的。PC_CR1 |= (1<<Uart_TX) | (1<<Uart_RX);粗心大意害死人啊。

为什么是EEFOCUS小白 发表于 2015-6-15 16:42:17

还用寄存器?

夏明smile 发表于 2015-6-15 18:21:03

怒赞!!!
页: [1]
查看完整版本: STM8L051复用PC5,PC6脚做串口无输出