stm32F1规避浮点运算

本文介绍了STM32F1型微控制器由于缺乏硬件浮点单元(FPU),在实时控制场景下进行浮点运算的挑战。作者通过将浮点运算转换为整数运算,并使用sprintf进行格式化输出,规避了浮点运算,展示了如何在STM32F1上处理时间敏感的计算任务。此外,文章强调了GPU浮点运算资源的价值。
摘要由CSDN通过智能技术生成

stm32f1 是没有FPU的, 不能进行硬件浮点运算,故在实时控制等时间敏感度很高的场景是很难处理的。需要用到stm32f4并开启硬件浮点运算

以下是一个场景,规避浮点运算 然后将结果打印整数位和小数位打印
tempStr 变量没有用到,忽略

//ttt = ((short)2) * 15 / 100 - 70  ; 原本是这样
ttt = ((short)TIM2->CNT) * 15  - 7000  ; //弄成int, 结果之后再除以100
sprintf(tempStr,"%d",ttt);
		if(ttt > 0){
			if(ttt%100 >= 10){ //小数位如果大于10 正常输出,否则需要补0
				
				printf("-   %s  ,  %d  ,%2d ,%d -\r\n",tempStr,ttt,ttt%100,ttt/100);   //必须%2d 否则605  变成6 5
			}else{
				printf("-   %s  ,  %d  ,0%d ,%d -\r\n",tempStr,ttt,ttt%100,ttt/100);   //必须%2d 否则605  变成6 5
			}
		}else{
			if(ttt/100 == 0){ //如果是负数且整数位是0 需要补一个负数符号
				printf("-   %s  ,  %d  ,%2d ,-0 -\r\n",tempStr,ttt,-ttt%100);   //   负数的0
			}else{
				if(-ttt%100 >= 10){
					printf("-   %s  ,  %d  ,%2d ,%d -\r\n",tempStr,ttt,-ttt%100,ttt/100);   //  负数
				}else{
					printf("-   %s  ,  %d  ,0%d ,%d -\r\n",tempStr,ttt,-ttt%100,ttt/100);   //  小数点后的 5 变成05
				}
			}
		}

由此可见,果然GPU的浮点运算资源是有价值的

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值