zj20115659 发表于 2015-10-14 16:31:25

ughbss 发表于 2015-10-14 16:17
你用的那个型号的STM8

STM8S103F3

ughbss 发表于 2015-10-14 16:50:32

本帖最后由 ughbss 于 2015-10-14 16:51 编辑

zj20115659 发表于 2015-10-14 16:31
STM8S103F3
问题出在,你初始化的是UART1相关寄存器,而你在使用时是用的UART2相关寄存器(看你的中断程序),STM8S103没有UART2

zj20115659 发表于 2015-10-14 17:12:42

ughbss 发表于 2015-10-14 16:50
问题出在,你初始化的是UART1相关寄存器,而你在使用时是用的UART2相关寄存器(看你的中断程序),STM8S10 ...

我用的是UART1; 函数名字是我从s105那边改过来的;不影响

ughbss 发表于 2015-10-14 17:30:10

zj20115659 发表于 2015-10-14 17:12
我用的是UART1; 函数名字是我从s105那边改过来的;不影响

现象是什么?MCU发数据乱码?只在115200下乱码?

zj20115659 发表于 2015-10-15 08:48:52

ughbss 发表于 2015-10-14 17:30
现象是什么?MCU发数据乱码?只在115200下乱码?

恩,57600以下都可以,加大到115200就乱码了

刚声打火机 发表于 2015-10-15 09:06:40

zj20115659 发表于 2015-10-14 16:01
代码发出来了,6楼

/*
*                     串口初始化            
*/
void uart1_init(void)
{
        UART1_Init(BAUD_RATE, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
                                UART1_SYNCMODE_CLOCK_DISABLE,UART1_MODE_TXRX_ENABLE);
        UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
        enableInterrupts();
        UART1_Cmd(ENABLE);
}


/*
*                  串口发送一字节               
*/
void usart1_send_byte(uc8 byte)
{
        while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET)
                ;
       
        UART1_SendData8(byte);
}

/* 中断处理函数 */
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
        uint8_t data;

        if (UART1_GetITStatus(UART1_IT_RXNE)) {
                data = UART1_ReceiveData8();
                // TODO : 添加自己的代码,处理data
                UART1_ClearITPendingBit(UART1_IT_RXNE);
        }
}

页: 1 [2]
查看完整版本: STM8 波特率