STM32串口与电脑收发通信,两个不同电路板(外部时钟和内部时钟配置)485、232、CAN通信

1.芯片类型STM32L431VCTX  低功耗芯片

2.STM32CubeMX   HAL库

3.串口通信UART3,关于串口中的使用,数据的发送接收这里面利用的中断接收(HAL_UART_Receive_TI(&huart3,miduart3.prxdata,200))和直接发送(HAL_UART_Transmit(&huart3,(unsigned char *)ptrdata,length,300)),在有关于串口收发不定长的字符时,可以串口接收通过中断来实现,即当接收到数据时,产生中断,程序转去处理接收到的数据。接收数据用的中断包括接收中断(RXNE)和空闲中断(IDLE)判断接收完成,大家也可以去尝试DMA接收发送

在有关串口接收的中断中,Cube里面生成HAL库是直接利用接收中断(RXNE)来进行配置的,代码流程是先初始化串口函数和串口中断函数,在进行串口接收中断函数调用,有关HAL_UART_RxCpLtCallback()这个函数的调用,需要用户自己去实现的部分就是重写HAL_UART_RxCpltCallback这个函数,需要加载到HAL_UART_IRQHandler这个函数里面,

4.自制电路板,一个有外部时钟,一个无外部时钟,实现利用串口UART3进行RS232、RS485通信,RS232、RS485有专门的电路图可以利用,进行串口收发利用串口中断来进行控制

5.在用低速内部时钟的和用高速外部时钟的进行CAN通信,应该切换成高速内部时钟,CAN通信需要计算波特率,低速时钟会导致计算波特率和利用高速时钟的CAN通信不一致,导致CAN通信不成功。如果一开始都使用高速外部时钟,没有外部时钟的那个电路板会自动切换内部低速时钟,这是导致CAN通信不成功的主要原因。

6.在串口收发时,提前先判断收到的数据长度是否为0,不是0不执行,是0才执行程序,可以避免收到数据不正确或者乱码的现象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值