|
本帖最后由 牛东 于 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 的波形如下
9600波特率,每一位100US即一格,10位就是10格,可是以上的波形明显是11格还多,不解! ... |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|