摘要: 以前刚开始学java或者python的时候,老是看到有配置环境变量之类的,然后我就被劝退了,总感觉怎么这么麻烦,还环境变量,主要是也没有讲为什么要配这个,配置这个的原理是什么? 今天刚好在了解keil输出bin文件,教程里又喊配置环境变量,但是我好像明白是怎么回事了。所谓了配置环境变量,不过是预输入 阅读全文
posted @ 2026-04-07 13:57 青春猪头青年 阅读(0) 评论(0) 推荐(0)
摘要: 有没有大神指导一下这个volatile关键字到底要不要加啊,中断里有做修改的全局变量就需要加吗,问了AI,感觉它说的好吓人。 阅读全文
posted @ 2026-04-07 13:15 青春猪头青年 阅读(1) 评论(0) 推荐(0)
摘要: 今天又在加深对ram和rom的了解。 根据前几天的代码试验我发现,我虽然在启动文件中给堆分配了一定的空间,但是我好像从来没使用过,不管是全局变量、静态变量、局部变量,只是存放在.data,.bss,stack这几个区域中,那我一开始分配的heap和?不是白分配了吗,总感觉有点亏。 然后就查询了一下, 阅读全文
posted @ 2026-04-07 12:20 青春猪头青年 阅读(1) 评论(0) 推荐(0)
摘要: 前面学到了使用串口通信,串口通信有好几种,比如普通的阻塞(测试阶段可用),然后就是中断串口(频繁打扰CPU),再然后就是DMA这个万能的搬运工,也可以使用它来进行串口通信。DMA的工作很简单,CPU发指令,发完之后只管把数据搬到外设(比如使用DMA串口给上位机发信息),或者将数据从外设搬到指定地址( 阅读全文
posted @ 2026-04-07 02:46 青春猪头青年 阅读(14) 评论(0) 推荐(0)
摘要: 在理解了双缓存池和环形缓存池之后,我又细想了下这个流程: 串口发送数据过来,当前设备需要先将数据存入环形缓存池,然后同一时间,就需要对环形缓存池的数据进行解析处理了(要是延时想让缓存池积累点再处理,可能会导致缓存池溢出) 处理的时候也是一个字节一个字节处理的,首先就是查询缓存池的两个指针,判断池子里 阅读全文
posted @ 2026-04-05 22:27 青春猪头青年 阅读(2) 评论(0) 推荐(0)
摘要: 我就只讲讲我对串口的新的领悟: 原来串口按照帧来传输是真的,比如数据位是7个,那么收到的也是7个数据位,那问题就来了,不应该按照一个字节8个位来解码吗,我是不是应该等下一帧传过来,从里面取一位补齐8位? 实际上就是,不需要,如果设置的数据位是7个,那么接收到这7个数据位之后,就直接处理了,自动补一个 阅读全文
posted @ 2026-04-05 14:43 青春猪头青年 阅读(4) 评论(0) 推荐(0)
摘要: 昨天学会了使用中断,于是准备快速测试一下中断嵌套,然后学后面的,结果,怎么又中招了! 先说结论,对于EXTI引脚PC13来说,它是与众不同的,意思就是我同样的配置同样的代码,其他的GPIO引脚可能都已经正常触发了,但是PC13检测不到电平的变化,也就没法触发中断! 一开始PC13中断失败了我觉得挺奇 阅读全文
posted @ 2026-04-05 00:16 青春猪头青年 阅读(1) 评论(0) 推荐(0)
摘要: 由于STM32HAL库没法写入日期到RTC计数器,只能用转换日历的方式直接写入寄存器值,这也导致了一个问题,HAL配套的闹钟也不能用HAL库了,只能用类似的方法做,但是实践起来还是没那么容易,兜兜转转花了五六个小时,甚至都把EXTI中断梳理了一遍,才终于碰巧解决了。 首先要说的是,当在CUBEMX中 阅读全文
posted @ 2026-04-04 02:40 青春猪头青年 阅读(4) 评论(0) 推荐(0)
摘要: 首先中断都需要配置AFIO,这个是用于引脚的复用功能的,因为EXTI中断没有那个IO口的引脚默认是EXTI模式的,所以如果想用EXTI,必须把这个打开。 AFIO也是一个独立的寄存器组,它有独立的clock时钟门,所以需要先开时钟,再进行配置,具体配置哪个位,参考hal库。 然后针对EXTI总结的说 阅读全文
posted @ 2026-04-04 00:09 青春猪头青年 阅读(4) 评论(0) 推荐(0)
摘要: 这个问题困惑了我好久,借着AI的发展,我也顺便把这个问题给疏通一下 STM32设置72Mhz频率和设置8Mhz频率跑同一个简单程序的时候,比如说LED翻转之类的,72Mhz的耗电量比8Mhz高很多,据说是五六倍。 预备知识:CPU 每一个时钟周期,内部无数寄存器、触发器、总线、门电路都要翻转一次,每 阅读全文
posted @ 2026-04-03 22:52 青春猪头青年 阅读(5) 评论(0) 推荐(0)