打印
[STM32F1]

这样配置USART3有什么问题,

[复制链接]
1180|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
s290484188|  楼主 | 2016-7-11 08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void USART_Config(void)
{
       
          GPIO_InitTypeDef GPIO_InitStructure;                        //ÉùÃ÷GPIO³õʼ»¯½á¹¹Ìå
    USART_InitTypeDef USART_InitStructure;                 //ÉùÃ÷USART³õʼ»¯½á¹¹Ìå
          NVIC_InitTypeDef NVIC_InitStructure;

          /*GPIOA Periph clock enable*/
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    /*USART3 Periph clock enable*/
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
               
          USART_InitStructure.USART_BaudRate = Baud;                                //²¨ÌØÂÊÉèÖÃ
          USART_InitStructure.USART_WordLength = USART_WordLength_8b;
          USART_InitStructure.USART_StopBits = USART_StopBits_1;
          USART_InitStructure.USART_Parity = USART_Parity_No;
          USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
          USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;


          /* Configure USART3 */
          USART_Init(USART3, &USART_InitStructure);

          /* Enable USART3 Receive and Transmit interrupts */
          USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);                                //ʹÄܽÓÊÕÖжÏ
          USART_ITConfig(USART3, USART_IT_TC,  ENABLE);                                //·¢ËÍÖжϣ¬·¢ËÍÍê³ÉÖ®ºó½øÈëÖжÏ
               
               
                /* Configure USART3 Tx (PB.10) as alternate function open-drain */
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                                        //ÅäÖÃTXËùÔÚµÄPB10¹Ü½Å
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //ÕâÀï²»ÄÜ´í
          GPIO_Init(GPIOB, &GPIO_InitStructure);
       
          /* Configure USART3 Rx as input floating */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//ʹÄÜGPIOʱÖÓ£¬RS485¿ØÖÆCTRÏßÒ²ÔÚÕâÀïʹÄÜ
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
               
                //Usart3 NVIC ÅäÖÃ
    NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//ÇÀÕ¼ÓÅÏȼ¶3
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×ÓÓÅÏȼ¶3
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQͨµÀʹÄÜ
          NVIC_Init(&NVIC_InitStructure);        //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷               
               
                /* Enable the USART3 */
          USART_Cmd(USART3, ENABLE);//ʹÄÜUSART3
}

void USART_SendDataString(u8 *dataSource)
{
          isUsartBusy = 1;//±íʾÕýÔÚ·¢ËÍ
          PtrBuf = dataSource;
    USART_ClearFlag(USART3, USART_FLAG_TC);//Çå³ý´«ÊäÍê³É±ê־룬·ñÔò¿ÉÄܶªÊ§µÚÒ»¸ö×Ö½Ú
          USART_SendData(USART3, PtrBuf[BufferDataNum++]);//·¢ËÍÒ»¸ö×Ö½Ú
}

沙发
yklstudent| | 2016-7-11 08:43 | 只看该作者
有什么问题,楼主上实物跑下就知道了

使用特权

评论回复
板凳
s290484188|  楼主 | 2016-7-11 09:12 | 只看该作者
这样配置以后,我实际发0xAA,电脑接收为0xEF;波特率设置为9600

使用特权

评论回复
地板
s290484188|  楼主 | 2016-7-11 09:12 | 只看该作者
这样配置以后,我实际发0xAA,电脑接收为0xEF;波特率设置为9600

使用特权

评论回复
5
s290484188|  楼主 | 2016-7-11 09:24 | 只看该作者
发现是#define HSI_VALUE    ((uint32_t)8000000) 这里的问题  但是不知道怎么修改

使用特权

评论回复
6
ccw1986| | 2016-7-11 12:46 | 只看该作者
楼主自己把程序下载下去看看是什么现象

使用特权

评论回复
7
Thor9| | 2016-7-12 21:10 | 只看该作者
用的时钟是多少啊

使用特权

评论回复
8
neeringstu| | 2016-7-12 21:29 | 只看该作者
你用的时候发现了什么问题啊

使用特权

评论回复
9
gejigeji521| | 2016-7-12 21:57 | 只看该作者
s290484188 发表于 2016-7-11 09:24
发现是#define HSI_VALUE    ((uint32_t)8000000) 这里的问题  但是不知道怎么修改

这个是时钟频率。是不是时钟分频什么的都没搞对

使用特权

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

本版积分规则

16

主题

54

帖子

0

粉丝