【MM32 eMiniBoard测评报告】+ 串口2库函数的问题
串口1库函数程序,可以发送。我改成串口2则不成功,发不出来。代码如下:
void UartInit_Loop(void)
{
//GPIO¶Ë¿ÚÉèÖÃ
GPIO_InitTypeDef GPIO_InitStructure;
UART_InitTypeDef UART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); //ʹÄÜUART2
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);//¿ªÆôGPIOAʱÖÓ
//UART2 NVIC ÅäÖÃ
//UART ³õʼ»¯ÉèÖÃ
GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
UART_InitStructure.UART_BaudRate = 115200;//´®¿Ú²¨ÌØÂÊ
UART_InitStructure.UART_WordLength = UART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñʽ
UART_InitStructure.UART_StopBits = UART_StopBits_1;//Ò»¸öֹͣλ
UART_InitStructure.UART_Parity = UART_Parity_No;//ÎÞÆæÅ¼Ð£Ñéλ
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;//ÎÞÓ²¼þÊý¾ÝÁ÷¿ØÖÆ
UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx; //ÊÕ·¢Ä£Ê½
UART_Init(UART2, &UART_InitStructure); //³õʼ»¯´®¿Ú2
UART_Cmd(UART2, ENABLE); //ʹÄÜ´®¿Ú2
//UART2_TX GPIOA.2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö
GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.2
//UART2_RX GPIOA.3³õʼ»¯
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿ÕÊäÈë
GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.3
//printf("UART OK!\r\n");
}
void uart_send(UART_TypeDef* UARTx,char c)
{
UART_SendData(UARTx,(uint16_t)c);
while(1)
{
if(UART_GetITStatus(UARTx, UART_IT_TXIEN))
{
UART_ClearITPendingBit(UARTx, UART_IT_TXIEN);
break;
}
}
}
int main(void)
{
long int i;
//LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
UartInit_Loop();//UART2µÄ·¢ËÍ£¬¿ÉÒÔͨ¹ý´®¿ÚÈí¼þ´òÓ¡UART OK
while(1) //ÎÞÏÞÑ»·
{
//Uart2RxTest(UART2);//UART1µÄ½ÓÊÕ£¬ÔÚ´®¿ÚÈí¼þÖÐÊäÈë×Ö·û£¬¿ÉÒÔͨ¹ý´òÓ¡ÑéÖ¤½ÓÊÕµÄÊý¾ÝÊÇ·ñÕýÈ·
uart_send(UART2,0x55);
for(i=0;i<1300000;i++);
}
}
请高手看看,谢谢!
我记得arm的串口好像有个子选择功能,就是你不需要在外设的物理上面区分那个串口,就类似于这样的语句:GPIO_InitStruct.Alternate = GPIO_AF7_USART1;,如果使用串口2的话,就改成GPIO_AF7_USART2,不知道是不是{:lol:} GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
这个功能我只改了管脚。寄存器是可以发出数据的。 RCC_APB2PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); //ʹÄÜUART2
这里错了应该是APB1.
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); //ʹÄÜUART2 WoodData 发表于 2020-4-25 14:26
RCC_APB2PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); //ʹÄÜUART2
这里错了应该是APB1.
RCC ...
多谢提醒,我晚上再试试 WoodData 发表于 2020-4-25 14:26
RCC_APB2PeriphClockCmd(RCC_APB1Periph_UART2, ENABLE); //ʹÄÜUART2
这里错了应该是APB1.
RCC ...
好了,多谢
页:
[1]