当前位置:首页 > 单片机 > 单片机
[导读]STM8的UART功能强大,除了常规的串口异步通讯外,还拥有LIN主模式、红外编解码器、智能卡模拟等功能。新手还是从基本的串口通讯入手,那些高级功能等熟练以后再慢慢研究吧。#i nclude void CLK_init(void) {

STM8的UART功能强大,除了常规的串口异步通讯外,还拥有LIN主模式、红外编解码器、智能卡模拟等功能。新手还是从基本的串口通讯入手,那些高级功能等熟练以后再慢慢研究吧。

#i nclude

void CLK_init(void)
{
CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M
}

void UART3_init(void)
{
UART3_BRR2 = 0x01; // 设置波特率9600
UART3_BRR1 = 0x34; // 8M/9600 = 0x341
UART3_CR2 = 0x2C; // 允许接收中断,允许接收,允许发送
}

#pragma vector=UART3_R_RXNE_vector
__interrupt void UART3_RX_RXNE(void)
{
unsigned char c;
c = UART3_DR; // 接收到数据了
while(!UART3_SR_TXE);
c++; // 把接收到的数据加1
UART3_DR = c; // 再发回去,为什么这么做?在电脑上串口调试软件里发1就收到2,发A就收到B,看运行结果比较方便
}

void init_devices(void)
{
asm("sim"); // 关全局中断
CLK_init();
UART3_init(); // 开发板上的串口接的是UART3,刚开始想当然的认为UART1,浪费我半个小时
asm("rim"); // 开全局中断
}

void main( void )
{
init_devices();

// 主循环里没有程序需要执行
while(1);
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭