我的串口4 搞了半天还是一点输出都没有 。
初始化代码:
void UART4_Configuration(u32 m)
{
USART_InitTypeDef USART_InitStructure;
USART_ClockInitTypeDef USART_ClockInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE );
USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; // ?±????????????
USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; // ?±????????
USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; // ?±????????±???????????????
USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; // ×??ó???????????±??????????SCLK????
USART_ClockInit(UART4, &USART_ClockInitStructure); // ?±?????????????è??
USART_InitStructure.USART_BaudRate = m; // ?¨????????115200
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 8??????
USART_InitStructure.USART_StopBits = USART_StopBits_1; // ?????á??????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(UART4, &USART_InitStructure);
USART_ClearFlag(UART4, USART_IT_RXNE); //???????????????????????ó?????ú?ú????
USART_ITConfig(UART4,USART_IT_RXNE, ENABLE); //????UART4??????
USART_Cmd(UART4, ENABLE); //UART4×???????????
}
端口初始化 :
/*UART4?®???????¨??*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //TX
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //×???????????50MHz?????è??
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// GPIO_Mode_AF_PP
GPIO_Init(GPIOC, &GPIO_InitStructure);//????A????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //RX
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //×???????????50MHz?????è??
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;// ???????? ?????è??
GPIO_Init(GPIOC, &GPIO_InitStructure);//????A????
int fputc(int ch, FILE *f)
{
USART_SendData(UART4, (u8) ch);
/* ???·???±???????á?? */
while(USART_GetFlagStatus(UART4, USART_FLAG_TC) == RESET) //????
{
}
return ch;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
[mw_shl_code=c,true]//初始化IO 串口3 //pclk1CLK1时钟频率(Mhz) //bound:波特率 void uart4_init(u32 pclk1,u32 bound) { float temp; u16 mantissa; u16 fraction; temp=(float)(pclk1*1000000)/(bound*16);//得到USARTDIV mantissa=temp; //得到整数部分 fraction=(temp-mantissa)*16; //得到小数部分 mantissa<<=4; mantissa+=fraction; RCC->APB2ENR|=1<<4; //使能PORTC口时钟 RCC->APB1ENR|=1<<19; //使能串口4时钟 GPIOC->CRH&=0XFFFF00FF; //IO状态设置 GPIOC->CRH|=0X00008B00; //IO状态设置 GPIOC->ODR|=1<<11; //rx上拉 RCC->APB1RSTR|=1<<19; //复位串口4 RCC->APB1RSTR&=~(1<<19);//停止复位 //波特率设置 UART4->BRR=mantissa; // 波特率设置 UART4->CR1|=0X200C; //1位停止,无校验位. //使能接收中断 UART4->CR1|=1<<8; //PE中断使能 UART4->CR1|=1<<5; //接收缓冲区非空中断使能 MY_NVIC_Init(2,0,UART4_IRQChannel,2);//组2,抢占3,响应2, } [/mw_shl_code]
如果没有,说明没有启动,比如没有打开时钟,或者没有使能Tx;
如果有波形,而对方收不到,就是具体参数问题,比如波特率、格式、或者对方接收有问题。
---------------------------------
还是不行。 没有任何数据。。
一周热门 更多>