OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3594|回复: 2

USART1发送时用逻辑分析仪看停止位不对

[复制链接]

11

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2012-4-26
在线时间
70 小时
发表于 2016-2-23 14:38:46 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 followme001 于 2016-2-24 08:34 编辑

我用的是战舰寄存器的,自己写了一个串口发送函数,不是用原子的printf函数,函数的功能是按一下按键KEY0,LED0状态反转,并且向串口调试助手发送+1后的数据。数据帖是9600的波特率(即每位占时间大概是104us)1位开始,8位数据,1位停止的,但为什么用逻辑分析仪抓数据时,却发现停止位是两位的,0x01后面的停止位是204us,即占用两位了,如下图所示,真奇怪,另外,发送函数不怎么会写,不知道写得对不对,只习惯51单片机的写法。求指点。
123.jpg

void uart_init(u32 pclk2,u32 baud)
{
    u16 mantissa;
    u16 fraction;
    float temp;
    temp =(float)(pclk2 * 1000000) / (16 * baud) ;
    mantissa = temp;
    fraction = (temp - mantissa) * 16;
    mantissa <<= 4;
    mantissa += fraction;
    RCC->APB2ENR |= 1 << 2;
    RCC->APB2ENR |= 1 << 14;
    GPIOA->CRH &= 0xFFFFF00F;
    GPIOA->CRH |= 0x000008B0;
    RCC->APB2RSTR |= 1 << 14;
    RCC->APB2RSTR &= ~(1 << 14);
    USART1->BRR = mantissa;
    USART1->CR1 |= 0x200C;
    USART1->CR1 |= 1 << 8;
    USART1->CR1 |= 1 << 5;
    mynvic_init(3,3,USART1_IRQChannel,2);
}

void send_char(u8 ch)
{
      while ((USART1->SR & 0x40) == 0)
      {
           ;
      }
      USART1->DR = (u8)ch;
}
int main(void)
{
u8 keyval = 0;
u8 txdata = 0;
stm32_clock_init(9);
led_init();
delay_init(72);
key_init();
uart_init(72,9600);
while (1)
{
     keyval = key_scan(0);
     switch (keyval)
     {
        case 1:
         LED0 = !LED0;
         txdata += 1;
         send_char(txdata);
         txdata += 1;
         send_char(txdata);
        break;

        default:
        break;
    }
  }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-2-23 23:19:38 | 显示全部楼层
回复

使用道具 举报

11

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2012-4-26
在线时间
70 小时
 楼主| 发表于 2016-2-24 08:36:57 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 22:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表