你用的那个型号的STM8
STM8S103F3 本帖最后由 ughbss 于 2015-10-14 16:51 编辑
zj20115659 发表于 2015-10-14 16:31
STM8S103F3
问题出在,你初始化的是UART1相关寄存器,而你在使用时是用的UART2相关寄存器(看你的中断程序),STM8S103没有UART2 ughbss 发表于 2015-10-14 16:50
问题出在,你初始化的是UART1相关寄存器,而你在使用时是用的UART2相关寄存器(看你的中断程序),STM8S10 ...
我用的是UART1; 函数名字是我从s105那边改过来的;不影响 zj20115659 发表于 2015-10-14 17:12
我用的是UART1; 函数名字是我从s105那边改过来的;不影响
现象是什么?MCU发数据乱码?只在115200下乱码? ughbss 发表于 2015-10-14 17:30
现象是什么?MCU发数据乱码?只在115200下乱码?
恩,57600以下都可以,加大到115200就乱码了 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]