/********** STM8S-Discovery UART Test *********
* 版本.........: 1.0
* 作者.........: 陈利栋
* 目标.........: STM8S105C6T6
* 文件名.......: main.c
* 开发环境.....: IAR for STM8 V1.1
* 创建时间.....: 2010.09.09
* 最后修改.....: 2010.09.10
*********************************************
*/

#include 
<iostm8s105c6.h>
#include 
<stdio.h>

#define BAUD_RATE     9600         //波特率
#define F_CPU         16000000     //CPU频率

//串口配置
//数据位:8
//停止位:1
//校验位: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);
    }
}

 

 

IAR工程下载:

 http://www.rayfile.com/zh-cn/files/83f1682b-bcad-11df-a92e-0015c55db73d/