当前位置: 首页 > news >正文

深圳做网站j华信科重庆网站设计哪家公司好

深圳做网站j华信科,重庆网站设计哪家公司好,郑州工程设计公司官网,建筑网2016农村别墅图大全必须类型一致的判断才能正常 double a-0.4; if(a < -0.2){print("低电平"); }这段代码可能未必如你所愿的运行. < 小于号的判断一定要类型一致, 尤其是牵扯到双精度类型的判断… 一定要保证符号 两边的数据类型一致才有可能得到你想要的结果. 代码里 -0.4 默认…

必须类型一致的判断才能正常

double a=-0.4;
if(a < -0.2){print("低电平");
}

这段代码可能未必如你所愿的运行. < 小于号的判断一定要类型一致, 尤其是牵扯到双精度类型的判断… 一定要保证符号 两边的数据类型一致才有可能得到你想要的结果. 代码里 -0.4 默认可能是float类型. 有的编译器默认是double类型. 一定要测试过才行.

不要使用 malloc函数获取内存

float* aa= (float*)malloc(1000 * sizeof(float));
float* bb= (float*)malloc(1000 * sizeof(float));
float* cc= (float*)malloc(1000 * sizeof(float));for (i = 0; i < signal->size; i++) 
{ sindata[i] = sin(aa[i]);cosdata[i] = cos(aa[i]); printf("%d  at Phase %f  sin is %f, cos is %f \r\n",i,referencePhase, referenceSin[i] , referenceCos[i] ); 
}

如果是这样的代码, 在PC上基本上是不会出什么问题, 如果是在STM32单片机上. 这么写估计会跑出来一大堆的问题.
为了这个问题我调试了大半天. 最终的原因在 动态分配内存 malloc() 函数上, 不一定能正确获得存储空间.
期初以为是float的精度不一致的问题, 逐行 printf 对比后才发现. 是malloc() 的问题.
改成

float aa[1000]= {0};
float bb[1000]= {0};
float cc[1000]= {0};for (i = 0; i < signal->size; i++) 
{ sindata[i] = sin(aa[i]);cosdata[i] = cos(aa[i]); printf("%d  at Phase %f  sin is %f, cos is %f \r\n",i,referencePhase, referenceSin[i] , referenceCos[i] ); 
}

把存储数据的变量改成全局静态的. 基本上不会出错.

不要在函数中初始化变量,尤其是大的数组变量.


int main()
{  double signalData[2000];generateMultiSignal(signalData, 2000); ...
}

这段代码中signalData 犯了2个错误,
1.在main函数中定义,
2.这里只是声明一个数组变量, 并非是初始化一个数组变量.
改成下面这么写就没问题了.

double signalData[2000]={0};
int main()
{  generateMultiSignal(signalData, 2000); ...
}

强制类型转换会丢失一个数值

float anglea = 6.2900;
int indexb = (int)(anglea * 100);
printf("indexbbb: %d, angle: %f\n",  indexb, anglea);

理论上应该得到的是

indexbbb: 629, angle: 6.2900

但实际上得到的是

indexbbb: 628, angle: 6.2900

比实际值少了一个1?

float anglea = 6.29000001;
int indexb = (int)(anglea * 100);
printf("indexbbb: %d, angle: %f\n",  indexb, anglea);

这样输出的值就是正常的. 具体原因不知.

开启DSP加速. 引用的lib库文件一定要正确.

引用 arm_cortexM4l_math.lib 时

arm_sin_f32(123456)  

输出123456

正确的lib库应该是用 lf 的浮点库.
arm_cortexM4lf_math.lib

害我找了1天的bug啊…
另外如何开启DSP加速, 请参考下面的几篇文章

https://blog.csdn.net/WandZ123/article/details/125593908
https://zhuanlan.zhihu.com/p/462911261
https://blog.csdn.net/m0_74923693/article/details/136857288

printf 必须数据格式一致

double age =18.0;
printf("age %f \r\n", age);

这会输出

age 0.00
正确代码如下

double age =18.0;
printf("age %f \r\n", (float)age);
http://www.sczhlp.com/news/146293/

相关文章:

  • 设置网站域名网站策划图
  • 国外的工业设计网站做视频网站用哪个cms
  • 北京建站模板展示团员个人信息查询系统
  • 天津建设部网站首页网站数据统计怎么做
  • html5video网站厚瑜珠海网站建设
  • 阿里云做外贸网站素材网站推荐
  • 为什么做这个网站反馈问题导航网站前端模板
  • go网站做富集分析wordpress添加工具
  • 旅游网站建设前期分析WordPress的cms模板
  • 网站开发大概多少钱wordpress插件怎么用
  • 网站服务器是什么意思百度站长工具seo查询
  • 网站建设详细工作汇报企业做网站要注意哪些
  • 玉林网站seo专门做二手房车的网站
  • 定制网站制作平台上海网站定制团队
  • 廊坊网站建设廊坊网络公司驻梦个人怎么做互联网推广平台
  • 建站系统模板wordpress免费版
  • 做游戏下载网站赚钱手机网站下拉菜单代码
  • mysql 网站 数据库页面简单的网站
  • 【SimpleFOC】区分BLDC霍尔安装间隔60还是120
  • 乌市建设工程质量监督站网站网站建设公司走进深圳一百讯
  • 苏州网站建设搜q479185700文档里链接网站地址怎么做
  • wordpress标题大小福州seo计费
  • 直播网站开发教程推广运营平台
  • 晚上必看正能量网站短视频开发软件和做网站的区别
  • 做网站的公司属于什么行业wordpress 文章投票
  • 如何利用视频网站做推广做多语言网站教程
  • 网站两边广告代码漳州网站建设哪家好
  • 鄂州商城网站建设网站挣钱网
  • 阿里巴巴网站怎么做全屏分类优化网站的方法有哪些
  • 做寄生虫对自己的网站有影响吗个人soho要怎么做企业网站