软件菜鸡对辰翼陀螺仪的最后一次调试--谨以此文纪念我的五一呜呜


首先打开一个之前配过uart2的工程
既然这样,先复习一下uart吧,反正菜鸡已经忘得差不多了.

嗯..通信方式有并行和串行的,串口通信是串行通信.

浅显易懂哈哈,单工,半双工,全双工
** 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。**
** 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线。(小本本)
在同步通讯中,收发设备上方会使用
一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。
在异步通讯中不使用时钟信号进行数据同步,它们直接在
数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。(openmv,imu通信的逻辑应该也是如此)
在同步通讯中,数据信号所传输的内容绝大部分是有效数据,
而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大**。

stm32串口通信部分:
STM32的串口通信接口有两种,分别是:UART(通用异步收发器)、USART(通用同步异步收发器)。
对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信了。
/uart/
STM32的UART特点:
1)全双工异步通信;
2)分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;
3)可编程的数据字长度(8位或者9位);
4)可配置的停止位(支持1或者2位停止位);
5)可配置的使用DMA多缓冲器通信;
6)单独的发送器和接收器使能位;
7)检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志;
8)多个带标志的中断源,触发中断;
9)其他:校验控制,四个错误检测标志。
(感觉还好,之前是不是一点没学...感谢这篇文章)
(原文链接:https://blog.csdn.net/qq_39792063/article/details/120578520,本文用以个人学习)


回看之前的openmv与32的通信,发现用的是usart而不是uart(深刻意识到了自己是一个移植狗)
/usart/
USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单
USART 在 STM32 应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一USART 通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如果出错哪具体哪里出错等等。(usart用的比较多)


开了两个usart1,2
开始移植...

我抄抄我抄抄
cubemx已一比一复制.
再检查一下我串口

中断函数重复定义了( •̀ ω •́ )y,注释掉就不报错了

原来在bsp_uart里面已经帮我定义过了哦

打印检查一下,好嘟了
移植!!!!

找到它们了!!!什么!?居然和我原文件有重名?把你纳入我了哼哼(恶魔笑)

哈?huart2都报错,改成它typedef的就好了

在移植文件里面找到

骚操作一下

en...
是时候移植剩下一个文件了,哦.h还没改,挺好的
建了个IMU文件夹,把它们放进去,添加路径,放到工程里
0 ERROR!?

哎呀忘记加imu的引用了...
下面就到主函数了,来吧,复制粘贴,引用,注释原代码,编译
兄弟我要伤心了...怎么没有啊

只有这个是什么意思,瞧不起爸爸吗?...我源源不断的数据在哪里啊

posted @ 2025-05-01 22:16  二九二  阅读(12)  评论(0)    收藏  举报