anastom_Fzx2T 发表于 2019-5-25 17:02:01

串口三232使用不了

将例程中的串口和端口稍作更改,程序如下,跳线棒也选择了com3的一边,为何不能实现例程中的发送数据再返回的功能(例程已经试过了,能行)。


#include "usart.h"               

/*******************************************************************************
* º¯ Êý Ãû         : USART1_Init
* º¯Êý¹¦ÄÜ                   : USART1³õʼ»¯º¯Êý
* Êä    Èë         : bound:²¨ÌØÂÊ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void USART3_Init(u32 bound)
{
   //GPIO¶Ë¿ÚÉèÖÃ
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);



       
        /*ÅäÖÃGPIOµÄģʽºÍIO¿Ú */
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//TX                           //´®¿ÚÊä³öPA9
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;          //¸´ÓÃÍÆÍìÊä³ö
        GPIO_Init(GPIOB,&GPIO_InitStructure);/* ³õʼ»¯´®¿ÚÊäÈëIO */
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;//RX                       //´®¿ÚÊäÈëPA10
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;                  //Ä£ÄâÊäÈë
        GPIO_Init(GPIOB,&GPIO_InitStructure); /* ³õʼ»¯GPIO */
       

   //USART1 ³õʼ»¯ÉèÖÃ
        USART_InitStructure.USART_BaudRate = bound;//²¨ÌØÂÊÉèÖÃ
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñʽ
        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;        //ÊÕ·¢Ä£Ê½
        USART_Init(USART3, &USART_InitStructure); //³õʼ»¯´®¿Ú1
       
        USART_Cmd(USART3, ENABLE);//ʹÄÜ´®¿Ú1
       
        USART_ClearFlag(USART3, USART_FLAG_TC);
               
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//¿ªÆôÏà¹ØÖжÏ

        //Usart1 NVIC ÅäÖÃ
        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;//´®¿Ú1ÖжÏͨµÀ
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//ÇÀÕ¼ÓÅÏȼ¶3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;                //×ÓÓÅÏȼ¶3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQͨµÀʹÄÜ
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷¡¢       
}

/*******************************************************************************
* º¯ Êý Ãû         : USART1_IRQHandler
* º¯Êý¹¦ÄÜ                   : USART1ÖжϺ¯Êý
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void USART3_IRQHandler(void)                        //´®¿Ú1ÖжϷþÎñ³ÌÐò
{
        u8 r;
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//½ÓÊÕÖжÏ
        {
                r =USART_ReceiveData(USART3);//(USART1->DR);        //¶ÁÈ¡½ÓÊÕµ½µÄÊý¾Ý
                USART_SendData(USART3,r);
                while(USART_GetFlagStatus(USART3,USART_FLAG_TC) != SET);
        }
        USART_ClearFlag(USART3,USART_FLAG_TC);
}        




xisha 发表于 2019-10-14 22:19:13

我也遇到这个问题,急求解决办法

Kiwi2021 发表于 2022-3-4 11:21:44

页: [1]
查看完整版本: 串口三232使用不了