USART1->DR=1,串口打印数据03 03 03,百思不得其解

2019-07-20 07:02发布

如题,是不是我串口初始化有问题?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
open12138
2019-07-21 04:06
int main(void)
{
        unsigned char cStatus;
        u8 t;
        delay_init();                     //延时函数初始化       
        USART2_Init(115200);   //串口初始化为9600
        do
        {
          USART2->DR = 0x11;
} while (1);



void USART2_Init(u32 My_BaudRate)
{
        GPIO_InitTypeDef GPIO_InitStrue;
        USART_InitTypeDef USART_InitStrue;
        NVIC_InitTypeDef NVIC_InitStrue;
       
        // 外设使能时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
        USART_DeInit(USART2);  //复位串口2 -> 可以没有
       
        // 初始化 串口对应IO口  TX-PA2  RX-PA3
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStrue);
       
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;
  GPIO_Init(GPIOA,&GPIO_InitStrue);
       
        // 初始化 串口模式状态
        USART_InitStrue.USART_BaudRate=My_BaudRate; // 波特率
        USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None; // 硬件流控制
        USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; // 发送 接收 模式都使用
        USART_InitStrue.USART_Parity=USART_Parity_No; // 没有奇偶校验
        USART_InitStrue.USART_StopBits=USART_StopBits_1; // 一位停止位
        USART_InitStrue.USART_WordLength=USART_WordLength_8b; // 每次发送数据宽度为8位
        USART_Init(USART2,&USART_InitStrue);
       
        USART_Cmd(USART2,ENABLE);//使能串口
        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断
       
        // 初始化 中断优先级
        NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;
        NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStrue);
}

一周热门 更多>