看了《超时空辉夜姬》!
「世界上只有一种真正的英雄主义,那就是在认清生活的真相之后依然热爱生活」😭
我看不磕这两位的同学,只能去磕哪吒和敖丙了😁
毕竟8千年轮回哪有灵珠魔丸有宿命感?😈
「世界上只有一种真正的英雄主义,那就是在认清生活的真相之后依然热爱生活」😭
我看不磕这两位的同学,只能去磕哪吒和敖丙了😁
毕竟8千年轮回哪有灵珠魔丸有宿命感?😈
今天本来有点累了,不是很想写东西,不过本着不能夭折的想法,加上今晚遇到的这件事属实有些令人哭笑不得,因此决定第一次的日记就写这个好了!
事情的起因是我今天需要编写一个ADC测量引脚电压的程序以测试硬件哥们的板子是否能用,在完成ADC的基本配置后,接下来是在ADC的转换完成回调中编写解算代码,为了确保结果准确,我也使用了Vrefint通道。
我第一次编写的代码是这样的:
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc){
if(hadc == &hadc1){
Verf = 1.2 * (4095.0 / mesData[2]);
Voltage_Res = mesData[0] / 4095 * Verf;
}
}相信此时有经验的 C 语言老师傅已经看出来问题了,只不过我当时仍然很傻逼的认为是ADC的配置问题、是采样频率问题...去重读了一遍芯片手册,反正就是没想到会给我来这么一出。
...其实某种程度上也是被柔情猫娘ChatGPT误导了吧。然而后来我的JLink调试器确实又开始似了,开始频繁地爆出SIGTRAP了...让我真的以为是调试器的锅...你们俩还真是一对苦命鸳鸯呢(
说回来,到底问题还是出在了计算的顺序上:
Voltage_Res = mesData[0] / 4095 * Verf;这行语句右侧程序将首先计算mesData[0] / 4095但是由于一些不知道什么原因(其实是这家伙不小心用错了uint32_t的数值类型导致 DMA 搬运回的数据不对)导致mesData[0]变成了整数,因此,mesData[0] / 4095也理所应当的被编译器按照整型运算处理了...
浮点数运算常量一定要加.0啊!!!
于是,真相大白,我的表达式其实一直是 Voltage_Res = 0 * Verf;真是有够奇异搞笑的...
OK~ 今天的流水账就先记到这里了,也算是开了个头吧,结果写到这里已经 00:05 了,OMG 原来已经跳过了一天吗,该死。
这次我一定要开始记笔记了
千里之行,始于足下
我发现以人类的记忆来说,如果人生只是匆匆走过,就会忘记很多自己曾经做过的事,以至于因为忘记自己的努力而自我内耗,亦或是重蹈覆辙……
因此,从今天起,我决定将我还能够想起来的,所有的个人经验记录于此,以备忘之用。
或许一些经常听的音乐也会保存在此……直到我搭好我的个人博客之前吧~
2026.3.9: 啊哈哈哈~博客来喽~
不管是否能够成功迈出第一步,先下定决心再说(