[STM8] 按下面这样发送可以吗?

[复制链接]
 楼主| yinxiangh 发表于 2017-5-31 22:17 | 显示全部楼层 |阅读模式
请教一下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));//发送完成?
  }
pengf 发表于 2017-5-31 22:18 | 显示全部楼层
差不多了
renyaq 发表于 2017-5-31 22:19 | 显示全部楼层
就是这样,我用库函数写的时候也是这样
supernan 发表于 2017-5-31 22:21 | 显示全部楼层
<div class="blockcode"><blockquote>void UART_Init(void)
{
asm("sim"); //这个不能少
UART2_CR1_M=0; //8位数据
UART2_CR1_PCEN=0; //无校验
UART2_CR2_REN=1; //接收使能
UART2_CR2_TEN=1; //发送使能
UART2_CR3_STOP=0; //停止位1位
UART2_BRR2=0x0B; //波特率 0:3
UART2_BRR1=0x08; //波特率 4:11
UART2_CR2_RIEN=1; //开启接受中断
asm("rim");
}
supernan 发表于 2017-5-31 22:22 | 显示全部楼层
#pragma vector=UART2_R_RXNE_vector                     //中断向量号加2
__interrupt void UART2_handler(void)               
{
   if(UART2_SR_RXNE)
   {
                  DATA[k]=UART2_DR;
}
}
xxrs 发表于 2017-5-31 22:23 | 显示全部楼层
为什么不判断接收的状态位呢?
 楼主| yinxiangh 发表于 2017-5-31 22:25 | 显示全部楼层
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

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