摘要: 我真的没有想到,while(1)循环里的两个if判断居然能这么大程度地影响我的定时器延时函数,本来以为几个if而已,也就是几个时钟周期的时间,忽略不计都可以, 结果因为我有个if函数里面是做MODBUS数据校验的一个函数,导致光是运行那一个if,就得耗时14us左右,我的天,牛逼。 这样看来另一个确 阅读全文
posted @ 2026-04-11 23:05 青春猪头青年 阅读(9) 评论(0) 推荐(0)
摘要: 听说这个比较简单 老样子,先向豆包问问题: 主机的IO接口用什么模式,推挽还是开漏 从机可以同时发送信息吗 多个从机可以同时接收主机的信息吗 从机为什么只有一个移位寄存器 数据装载进入移位寄存器的时间是否是限制了SPI速率上线的主要原因 SPI的通信只能由主机发起 SPI通信的核心就是一个环形以为寄 阅读全文
posted @ 2026-04-10 23:10 青春猪头青年 阅读(16) 评论(0) 推荐(0)
摘要: 被坑了。 今天不小心中了豆包的全套。 上面是跟我说无法识别主机发送的ACK,然后我被坑了一个多小时后,又问了一遍,哈哈哈哈 昨天完成了使用I2C控制OLED,因为只需要给OLED发控制指令,所以就没写收数据的函数,然后今天因为要使用AT24C02,正好补齐。 按照惯例,我先是和豆包聊聊新使用的芯片, 阅读全文
posted @ 2026-04-09 20:42 青春猪头青年 阅读(22) 评论(0) 推荐(0)
摘要: 今天总算把I2C大致理清楚了。 先大致讲一下I2C:类比串口通信,I2C也只有一条数据线,也就是SDA,串口的通信协议是默认高电平,遇到拉低电平的情况,等半个位的时间,检测是否低电平,若是,通信开始; I2C的也有点类似,但是它需要另一跟线配合,也就是SCL时钟线;SDA和SCL这两条线从物理结构上 阅读全文
posted @ 2026-04-09 01:27 青春猪头青年 阅读(37) 评论(0) 推荐(0)
摘要: 经常看到这样的东西: 还有这样的: 但是这样的合起来才是一个最基础的头文件框架: 首先#ifndef XXX_H__ #define XXX_H__ #endif这三个组合起来主要是给编译器识别的,防止编译器重复编译#endif之前的内容。 这个的作用就是当某个.c或者.h文件头一次调用你这个.h头 阅读全文
posted @ 2026-04-08 14:45 青春猪头青年 阅读(10) 评论(0) 推荐(0)
摘要: 发送方是单片机的TX,接收方是另一个单片机的RX,所有的串口都是TX那一方是主控,负责电平高低的变换。 串口通信只需要一根线,串口的协议也很简单,这根线默认高电平,当这根线首次被TX拉低时,RX立马开启内部时钟进行计时,然后收发约定长度的数据,然后校验停止位,然后结束电平被TX拉高。 具体来看: 假 阅读全文
posted @ 2026-04-08 04:27 青春猪头青年 阅读(28) 评论(0) 推荐(0)
摘要: 以前刚开始学java或者python的时候,老是看到有配置环境变量之类的,然后我就被劝退了,总感觉怎么这么麻烦,还环境变量,主要是也没有讲为什么要配这个,配置这个的原理是什么? 今天刚好在了解keil输出bin文件,教程里又喊配置环境变量,但是我好像明白是怎么回事了。所谓了配置环境变量,不过是预输入 阅读全文
posted @ 2026-04-07 13:57 青春猪头青年 阅读(6) 评论(0) 推荐(0)
摘要: 有没有大神指导一下这个volatile关键字到底要不要加啊,中断里有做修改的全局变量就需要加吗,问了AI,感觉它说的好吓人。 阅读全文
posted @ 2026-04-07 13:15 青春猪头青年 阅读(6) 评论(0) 推荐(0)
摘要: 今天又在加深对ram和rom的了解。 根据前几天的代码试验我发现,我虽然在启动文件中给堆分配了一定的空间,但是我好像从来没使用过,不管是全局变量、静态变量、局部变量,只是存放在.data,.bss,stack这几个区域中,那我一开始分配的heap和?不是白分配了吗,总感觉有点亏。 然后就查询了一下, 阅读全文
posted @ 2026-04-07 12:20 青春猪头青年 阅读(14) 评论(0) 推荐(0)
摘要: 前面学到了使用串口通信,串口通信有好几种,比如普通的阻塞(测试阶段可用),然后就是中断串口(频繁打扰CPU),再然后就是DMA这个万能的搬运工,也可以使用它来进行串口通信。DMA的工作很简单,CPU发指令,发完之后只管把数据搬到外设(比如使用DMA串口给上位机发信息),或者将数据从外设搬到指定地址( 阅读全文
posted @ 2026-04-07 02:46 青春猪头青年 阅读(246) 评论(0) 推荐(0)