|
#include <iostm8s105c6.h>
#include <stdio.h>
#define BAUD_RATE 9600 //波特率
#define F_CPU 16000000 //CPU頻率
//串口配置
//數(shù)據(jù)位:8
//停止位:1
//校驗(yàn)位:None
void UART_Init(void)
{
UART2_CR2_TEN = 1;
UART2_CR2_REN = 1;
UART2_CR2_RIEN = 1;
UART2_BRR2 = ((unsigned char)((F_CPU / BAUD_RATE) & 0x0f)) + (((unsigned char)((F_CPU / BAUD_RATE) >> 8)) & 0xf0);
UART2_BRR1 = ((unsigned char)((F_CPU / BAUD_RATE) >> 4));
}
void UART_TxByte(unsigned char _data)
{
while (UART2_SR_TXE == 0);
UART2_DR = _data;
}
int putchar(int c)
{
UART_TxByte(c);
return c;
}
int main(void)
{
CLK_SWCR_SWEN = 1;
CLK_SWR = 0xB4; //HSE selected as master clock source
UART_Init();
printf("********** STM8S-Discovery UART Test *********\r\n");
printf("Build: %s %s\r\n", __DATE__, __TIME__);
asm("rim");
while (1)
{
}
}
#pragma vector = UART2_R_RXNE_vector
__interrupt void UART2_IRQHandler(void)
{
if (UART2_SR_RXNE == 1)
{
UART_TxByte(UART2_DR);
}
}
|
|