TI MSPM0 long long转型无法烧录

        在使用TI MSPM0G3507测试OLED的时候,因为要让OLED显示小车编码器计数,所以将long long型的计数通过snprintf进行转型,但在snprintf中添加 %f 之类的却无法进行烧录;

        最后选择了这种办法强行转整数显示,虽然无法显示小数了,但可以正常烧录运行;

snprintf(oled_buffer,sizeof(oled_buffer),"Flag=%d",flag);
OLED_ShowString(64,0,(uint8_t*)oled_buffer,16);

snprintf(oled_buffer, sizeof(oled_buffer), "EN=%-6lldcm", (long long)((float)countA_ * 0.02608f));
OLED_ShowString(10,2,(uint8_t*)oled_buffer,16);

snprintf(oled_buffer, sizeof(oled_buffer), "EN=%-6lldcm", (long long)((float)countB_ * 0.02608f));
OLED_ShowString(10,4,(uint8_t*)oled_buffer,16);

snprintf(oled_buffer, sizeof(oled_buffer), "Angle=%-4lld", (long long)yaw);
OLED_ShowString(10,6,(uint8_t*)oled_buffer,16);

        先将运算的数据转float再强转long long只保留整数部分。

  • 距离计算使用了转换因子 0.02608f,将计数转换为厘米,轮距为44mm

也可以将整数部分和小数部分拆开分别显示:

// 方法1:手动拆分整数和小数部分
float value = 3.14159;
int integer_part = (int)value;                  // 整数部分
int decimal_part = (int)((value - integer_part) * 100);  // 保留2位小数

snprintf(oled_buffer, sizeof(oled_buffer), "Val=%d.%02d", integer_part, decimal_part);
OLED_ShowString(10, 2, (uint8_t*)oled_buffer, 16);

// 方法2:使用整数运算(适合已知缩放因子的情况)
// 例如对于之前的距离计算,可以直接显示两位小数
long long distance = (long long)(countA_ * 0.02608f * 100);  // 放大100倍
snprintf(oled_buffer, sizeof(oled_buffer), "EN=%lld.%02lldcm", distance / 100, distance % 100);
OLED_ShowString(10, 2, (uint8_t*)oled_buffer, 16);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值