#include "stm8s.h"
#include "stm8s_uart2.h"
#include "stm8s_gpio.h"
#include "stm8s_clk.h"
#include "stdio.h"
void Delay(u16 time)
{
while(time != 0)
{
time--;
}
}
//初始化串口 波特率115200,8位数据位 1位停止位,无奇偶校验
//查询发送,中断方式接收。
void UART_Init(void)
{
UART2_DeInit();
UART2->BRR2 = 0X01; //设置波特率为9600
UART2->BRR1 = 0X34;
UART2->CR2 = 0X2C; //设置串口中断,允许接收发送
// UART2_Cmd(ENABLE);
}
void Init_CLK(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);//设置主频为内部高速时钟,8MHz
}
void main(void)
{
Init_CLK();
enableInterrupts();
UART_Init();
while(1);
}
#pragma vector=0x14
__interrupt void UART2_RX_IRQHandler(void)
{
unsigned int temp;
temp = UART2->DR;
while((UART2->SR & 0x80) == 0x00); //等待发送寄存器为空
Delay(1);
temp++;
UART2->DR = temp; //接收到的数据加一发送回去
}
这是我的源码,想把接收到的数据加一在发送出去,但是每次串口助手收到的数据跟发送的一样,要么就会出现乱码,都没成功过,是我的程序还是有什么地方要设置,请大神详解。。。。在线等待
|