打印
[STM8]

按下面这样发送可以吗?

[复制链接]
541|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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");
}

使用特权

评论回复
5
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;
}
}

使用特权

评论回复
6
xxrs| | 2017-5-31 22:23 | 只看该作者
为什么不判断接收的状态位呢?

使用特权

评论回复
7
yinxiangh|  楼主 | 2017-5-31 22:25 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

723

主题

7134

帖子

2

粉丝