我用库的方式搞串口2,数据发不出来。
改用寄存器方式,代码如下:
void UartInit_Loop(void)
{
//GPIO¶Ë¿ÚÉèÖÃ
RCC->AHBENR|=1<<17; //ʹÄÜGPIOA¿ÚʱÖÓ
RCC->APB1ENR|=1<<17; //ʹÄÜ´®¿ÚʱÖÓ
GPIOA->AFRL&=0x00ff;
GPIOA->AFRL|=0x1100; //
//UART ³õʼ»¯ÉèÖÃ
UART2->BRR = (SystemCoreClock / 16) /(115200);
UART2->FRA=(SystemCoreClock / 16) %(115200);
UART2->CCR|=0x30; //110000
UART2->GCR|=0x19; //11001;
UART2->GCR |= 0x0001; //ʹÄÜ´®¿Ú2
GPIOA->CRL&=0XFFFF00FF;//IO״̬ÉèÖÃ
GPIOA->CRL|=0X00008B00;//IO״̬ÉèÖÃ
//printf("UART OK!\r\n");
}
void uart_send(char c)
{
UART2->TDR = c;
while(1)
{
if(UART2->ISR&0x1)
{
UART2->ICR = 0x1;
break;
}
}
}
long int i;
UartInit_Loop(); //UART1µÄ·¢ËÍ£¬¿ÉÒÔͨ¹ý´®¿ÚÈí¼þ´òÓ¡UART OK
while(1) //ÎÞÏÞÑ»·
{
//Uart1RxTest(UART1);//UART1µÄ½ÓÊÕ£¬ÔÚ´®¿ÚÈí¼þÖÐÊäÈë×Ö·û£¬¿ÉÒÔͨ¹ý´òÓ¡ÑéÖ¤½ÓÊÕµÄÊý¾ÝÊÇ·ñÕýÈ·
uart_send(0x55);
for(i=2000000;i>0;i--);
}
用串口1是波特率115200,可是改成串口2,波特率变成57600了。
高手看看,怎么回事?谢谢!
|