/********** 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);
}
}
* 版本.........: 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/