stm32f103rct6单片机串口波形不对求解!

2020-01-01 17:39发布

本帖最后由 牛东 于 2017-1-15 13:10 编辑

stm32的一个下位机串口通讯项目,串口波特率9600,设置如下,一位接收,8个数据位,一位停止

void uart_init(u32 pclk2,u32 bound)
{           
        float temp;
        u16 mantissa;
        u16 fraction;           
        temp=(float)(pclk2*1000000)/(bound*16);
        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->CR2&=0Xcfff;  
        #if EN_USART1_RX               

        USART1->CR1|=1<<8;   
        USART1->CR1|=1<<5;            
        MY_NVIC_Init(1,3,USART1_IRQn,2);
        #endif
}


主程序调用如下:

          Stm32_Clock_Init(9);         //72M
        uart_init(72,9600);  //9600


PCB上电后测得一个数据 F0 的波形如下



661626173844008942.jpg (81.59 KB, 下载次数: 0) 下载附件 9600波特率,每一位100US即一格,10位就是10格,可是以上的波形明显是11格还多,不解! ... ... ... ... .. ... 2017-1-15 12:59 上传


9600波特率,每一位100US即一格,10位就是10格,可是以上的波形明显是11格还多,不解! ...
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
牛东
1楼-- · 2020-01-02 18:02
NJ8888 发表于 2017-1-15 13:19
示波器检定过期了,不准

你的眼睛很贼啊!!!
牛东
2楼-- · 2020-01-02 19:29
 精彩回答 2  元偷偷看……
mangoes
3楼-- · 2020-01-02 21:13
探头补偿有问题
miscell
4楼-- · 2020-01-02 22:42
程序问题
牛东
5楼-- · 2020-01-03 02:33
mangoes 发表于 2017-1-17 18:44
探头补偿有问题

但是我测STC的单片机串口通讯的波形是对的哦!!9600波特率,数据也是F0
mangoes
6楼-- · 2020-01-03 02:40
牛东 发表于 2017-1-18 08:52
但是我测STC的单片机串口通讯的波形是对的哦!!9600波特率,数据也是F0

我说的只是示波器的问题
你这个情况最好找一个可以用的开发板例程来做对比,一点一点的换上你的代码,这样好排查一些。
如果换了开发板例程的代码还是不行,那你就要考虑硬件问题了

一周热门 更多>