无法发送无法接收:
- 修改printf函数,让数据可以发送定位到指定串口
int __io_putchar(int ch)
{
RS485A_sen();
if (ch == '\n')
{
uint8_t enter = '\r';
if ((HAL_UART_Transmit(&huart1, &enter, 1, 5000)) != HAL_OK)
{
RS485A_rec();
return -1;
}
}
if ((HAL_UART_Transmit(&huart1, (uint8_t *) &ch, 1, 5000)) != HAL_OK)
{
RS485A_rec();
return -1;
}
RS485A_rec();
return ch;
}
- 测量485的R端发现电平为5V,但是单片机使用的是STM32L433系列,电压为3.3V,而查询手册后发现,该管脚为FT管脚,可以支持5V(低功耗情况下不要这么作,功耗大的要命)
- 示波器检查485芯片的输入输出使能发现5V电没供上,但是还是有2.5V的电压(这里告诫我以后要断电就统一断,不能留下输入输出信号线还依旧通着电)
- 示波器检查芯片波形没问题
- 回归程序串口接收部分,发现串口接收使能函数没有在程序开始调用。
- 加上,但是位置放的太靠前了,比串口初始化还靠前,不顶用。
- 放在后面,ok成功出数