你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
wenyangzeng 发表于 2018-3-30 10:26 printf指向哪个串口由下面函数设定,本例使用usart2: PUTCHAR_PROTOTYPE
anobodykey 发表于 2018-3-30 23:16 应该不会有这个问题吧,你串口重定向的代码实现是怎样的?我一般是跟STD库一致,直接操作TDR寄存器,没有使 ...
printf指向哪个串口由下面函数设定,本例使用usart2:
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart2 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
可以使用中断接收的:
__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
评分
查看全部评分
评分
查看全部评分
添加这个之后使用printf来打印的。
int fputc(int ch,FILE *f)
{
uint8_t temp[1]={ch};
return HAL_UART_Transmit(&huart2,temp,1,3);
}
在串口2初始化的时候增加的中断接收
if(HAL_UART_Receive_IT(&huart2,(uint8_t*)bRxBuffer,1) != HAL_OK)
{
//Error_Handler();
printf("error\n");
}
在中断函数里面
void USART2_IRQHandler(void)
{
//printf("uart2\n");
HAL_UART_IRQHandler(&huart2);
}
实际测试的时候,没有办法进中断函数里面。
备注:同样的中断接收方式同时在Lpuart1上使用,可以正常使用;将putc()函数定向到UART1之后UART2接收中断就可以使用了。
串口打印是通过下面实现的:
int fputc(int ch,FILE *f)
{
uint8_t temp[1]={ch};
return HAL_UART_Transmit(&huart2,temp,1,3);
}