[STM8] uart配置问题

[复制链接]
1153|5
 楼主| wenfen 发表于 2016-1-27 20:00 | 显示全部楼层 |阅读模式
请教一下stm8的uart配置问题,我参照手册,初始化如下:void uart2_init()
{
  UART2->CR1  = 0x00;//8位数据位
  UART2->CR3  = 0x00;//1个停止位
  UART2->BRR2 = 0x02;//波特率9600bps,默认内部晶振,16M,16000000/9600=0000 0110 1000 0010,取头尾各4位
  UART2->BRR1 = 0x68;//取中间8位
  UART2->CR2  = 0x08;//发送使能
}

按下面这样发送可以吗?
if( data1 == !data2)
  {
    while(!(UART2->SR & 0x80));//数据发送到移位寄存器?
    UART2->DR = data2;
    while(!(UART2->SR & 0x40));//发送完成?
  }
zhuhuis 发表于 2016-1-27 20:01 | 显示全部楼层
差不多了
DreamofOven 发表于 2016-1-29 10:31 | 显示全部楼层
就是这样,我用库函数写的时候也是这样
54212脑白金 发表于 2016-1-29 10:43 | 显示全部楼层
  1. <div class="blockcode"><blockquote>void UART_Init(void)
  2. {
  3. asm("sim"); //这个不能少
  4. UART2_CR1_M=0; //8位数据
  5. UART2_CR1_PCEN=0; //无校验
  6. UART2_CR2_REN=1; //接收使能
  7. UART2_CR2_TEN=1; //发送使能
  8. UART2_CR3_STOP=0; //停止位1位
  9. UART2_BRR2=0x0B; //波特率 0:3
  10. UART2_BRR1=0x08; //波特率 4:11
  11. UART2_CR2_RIEN=1; //开启接受中断
  12. asm("rim");
  13. }
  1. #pragma vector=UART2_R_RXNE_vector                     //中断向量号加2
  2. __interrupt void UART2_handler(void)               
  3. {
  4.    if(UART2_SR_RXNE)
  5.    {
  6.                   DATA[k]=UART2_DR;
  7. }
  8. }



huangcunxiake 发表于 2016-1-29 13:50 | 显示全部楼层
就是这样的
Tennasi 发表于 2016-1-29 14:41 | 显示全部楼层
为什么不判断接收的状态位呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部