stm32F1规避浮点运算

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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: STM32F103是一款32位的单片机,它内置了浮点运算单元(FPU),可以进行高精度的数学计算,包括三角函数的计算。 在STM32F10x系列的软件包中,提供了针对浮点数计算的数学库函数(math.h),可以直接调用其中的三角函数函数进行计算。 常用的三角函数函数包括: 1. sin(x):计算正弦函数值,其中x为弧度值。 2. cos(x):计算余弦函数值,其中x为弧度值。 3. tan(x):计算正切函数值,其中x为弧度值。 为了使用这些函数,首先需要在工程中包含math.h头文件,并链接数学库函数。 以计算正弦函数为例,可以使用如下代码: ```c #include <math.h> float x = 0.5; // 弧度值 float result = sin(x); ``` 需要注意的是,STM32F103的FPU属于单精度浮点运算单元,因此结果的精度可能不如双精度浮点数计算库函数准确。 另外,如果项目对计算速度要求较高,可以考虑使用查表法或近似公式进行三角函数的计算,以提高计算效率。 总之,通过STM32F103浮点运算单元和数学库函数,可以方便地进行三角函数的计算操作,满足实际项目需求。 ### 回答2: STM32F103是一款32位ARM Cortex-M3内核的微控制器,其实现了硬件浮点运算单元,可以高效地进行三角函数计算。 首先,在使用STM32F103进行三角函数计算前,我们需要通过库函数来进行初始化配置。然后,我们可以使用库函数中提供的各种三角函数计算函数,例如sinf()、cosf()、tanf()等。 以计算正弦函数为例,我们可以通过以下步骤来实现: 1. 在代码中引入math.h库函数。 2. 调用sinf()函数,并将需要计算的角度(以弧度为单位)作为参数传入。 3. 函数将返回计算得到的正弦值,并可以将其保存在一个变量中。 例如,假设我们需要计算角度为30度的正弦值,代码如下所示: #include <math.h> float result; float angle = 30; // 角度 float radian = angle * 3.14159 / 180; // 将角度转换为弧度 result = sinf(radian); // 调用sinf()函数进行计算 通过以上步骤,我们可以使用STM32F103进行三角函数计算。同样的方法也适用于计算余弦函数和正切函数,只需要相应地调用cosf()和tanf()函数即可。 需要注意的是,三角函数计算可能会消耗一定的处理器资源和时间,因此在使用中需要考虑其时间开销和系统性能。另外,可以考虑使用查表法等优化技术进一步优化计算过程,以提高效率。 ### 回答3: STM32F103是一颗Cortex-M3内核的微控制器,它可以用于编程和控制各种应用。在STM32F103上进行三角函数的计算可以通过使用数学库函数来实现。 STM32F103内置了一些与三角函数相关的库函数,如sin、cos和tan等。这些库函数可以用于计算三角函数的值。这些函数通过输入一个角度值(弧度制)来计算其对应的三角函数值。 例如,要计算sin(30°),可以使用库函数sin,将输入参数设置为30°的对应弧度值(即30°* π / 180°): ```c #include <math.h> #include "stm32f10x.h" int main(void) { float degree = 30.0; float radian = degree * M_PI / 180.0; float sin_value = sin(radian); // 在这里可以使用sin_value进行后续的计算或操作 while (1) { // 循环执行其他操作 } } ``` 同样地,cos和tan函数的计算方法也相似。通过输入不同的角度值和使用对应的库函数,可以计算出cos和tan的值。 需要注意的是,在使用三角函数计算时,角度值需要先转换为弧度值。因此,需要相应地将角度值乘以π(pi)除以180°。 正如上述示例中所展示的,可以将三角函数计算结果存储在变量中,并在后续的代码中使用这些值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值