分享

IAR+STM8 UART串口发送与中断接收

 charlion 2016-08-08

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

#i nclude <iostm8s207sb.h>

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);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多