- 博客(12)
- 收藏
- 关注
原创 char类型取值范围是多少?由此带来的问题
一个char类型的值赋值给了int类型,但是char为signed char时的取值范围只能是-128到127,表示不了128这个值,在这里128就是-128,-128赋值给int类型时就变成了0xffffff80,就是-128,判断0xffffff80!因为很多编译器char默认是unsigned char,是可以表示128这个数值的,赋值给int类型也不会变成0xffffff80。这个int类型的变量值始终不为0x80即128,对比正常的发现这个值当为0x80时变成了0xffffff80,即-128。
2025-04-02 16:27:18
162
原创 为什么使用TCP发送字符串到服务器会将日志也发到了服务器?
因为tcp发送的是固定的字符串,日志输出的也是固定的字符串,代码在编译时一般会将字符串这种恒定不变的数据直接写到flash中,直接从flash中取出字符串数据进行使用。这两行代码又是连续的,所以字符串被编译时也是放在了连续的地址,上述TCP发送函数中取数据的指针递增取数据就取到了日志中想要发送的字符串数据。答案:因为发送TCP数据的长度超过了实际要发送的字符串长度是5,,填的发送数据长度是15,函数中的指针在继续向后面的地址取值,就取到了不想发送的数据。为什么正好是日志中的数据呢?
2025-03-17 16:28:11
167
原创 记一个bool类型导致sscanf匹配字符串异常问题
缺少了第一个逗号前的字符串,将bool flg = 0;改为int flg = 0;输出结果为:,12345,0。
2024-10-31 14:37:34
117
1
原创 记录一个由数据类型引发的bug
这段代码中的两个if只有 if(Rx_Buf[0]==0x55)会执行,通过串口输出Rx_Buf[0]的值确实有收到0xAA但是就是不进判断逻辑。这是Rx_Buf最开始的定义,char被编译器默认为有符号字符类型,取值范围。
2024-05-09 23:31:38
167
原创 STM32 BOOT成功跳转到APP但APP不运行问题解决
百度了一下可能的原因 有人说是因为PLL不能二次配置倍频 否则会进入void Error_Handler(void),我就意识到之前的BOOT和APP时钟配置是一致的正常跑,现在的BOOT和APP配置不一致所以跑不了。自己写了个STM32F103RCT6的boot 首先使用boot程序改了下载地址和中断向量表这些代码中的打印作为APP进行验证正常跳转运行。但是将BOOT时钟改为和APP一样或者把APP时钟改为和BOOT一样都不太合适 不通用,既然是PLL导致的问题,那我不用PLL不就可以了?
2024-04-27 23:49:38
1465
原创 解决STM32F103C8T6 PC13引脚一直输出低电平的问题
最近在使用STM32F103C8T6的核心板写程序,尝试控制核心板上的LED灯发现控制不了,灯一直是亮的,于是进行了一番排查发现是由于初始化了RTC,导致PC13引脚被RTC使用了,引脚只能一直输出低电平,关闭RTC初始化代码就可以正常控制输出高低电平。
2024-04-06 18:20:40
1298
4
原创 STM32F103使用HAL库硬件I2C总是busy的问题
从网上git clone下来一个STM32F103C8T6代码,测试发现I2C总是处于busy状态,网上查看各种资料,有人说是已知问题,官方已经更新了HAL库版本修复,我查看了一下工程HAL库版本是1.7的最新已经1.8 改用1.8的版本重新生成代码测试解决了这个问题。
2024-03-23 17:08:24
714
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人