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);

### TI MSPM0G3507 芯片烧录方法 对于TI MSPM0G3507芯片的烧录,通常推荐使用Keil MDK环境来完成程序下载和调试工作。为了顺利进行这一过程,需确保安装了MDK 5.0及以上版本、SysConfig工具以及mspm0_sdk_2_01_00_03软件包[^3]。 #### 准备工作 - 安装好上述提到的所有必要软件组件。 - 连接XDS110仿真器至PC端USB接口,并通过JTAG/SWD连接线缆将目标板上的对应接口相连。 #### 配置项目工程文件 打开已创建好的工程项目,在Project选项卡下的Target标签页内设置Debug界面参数: - Debugger/Programmer选择为CMSIS-DAP Debug Driver; - Flash Programming勾选Enable flash programming and debugging using selected flash algorithm。 #### 编写与编译代码 编写适用于MSPM0G3507的应用程序代码并保存于对应的源文件夹中。之后点击Build按钮构建整个应用程序,确认无误后生成.hex/.bin格式的目标映像文件用于后续编程操作。 #### 下载固件到设备 在成功编译完成后,按下Download键可直接把当前工程内的二进制数据传输给单片机内部Flash存储空间里执行在线加载动作;或者利用外部工具如IAR Embedded Workbench等第三方IDE平台配合特定脚本实现离线刷入流程。 ```c // 示例:简单的LED闪烁测试程序片段 #include "msp.h" void main(void){ WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; // Stop watchdog timer P1->DIR |= BIT0; // Set P1.0 to output direction while(1){ P1->OUT ^= BIT0; // Toggle LED on/off at port pin P1.0 __delay_cycles(50000); // Delay loop for visual effect } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值