完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在裸奔程序中,循环获取7个通道的AD值并将转换为电阻后逐个打印,串口助手中显示正常,代码如下;
现将其移植到RTX系统中,启用单任务时运行正常:
接着将AD转换与打印数据分离实现,启用一个新的任务用于打印AD数据,因此在AD任务中将7个通道的AD值逐个存入float类型数组R中,并在打印任务中打印AD值。结果AD值无法正常显示,数据显示如下图所示,, 请问有人遇到过类似的情况吗?是什么原因造成的? (补充:测试时发现将SPI的时钟配置修改为70KHz后,AD值将正常显示,,原始SPI时钟频率为140KHz,根据AD数据手册时序要求得到SPI时钟频率的上限为2MHz,所以应该不是SPI的问题,应该只是有所牵连,具体问题出自于哪还望大神们解惑!!)
|
|
相关推荐
1个回答
|
|
从您提供的代码片段来看,您正在尝试使用ADS1248读取7个通道的模拟值,并将它们转换为电阻值。然而,您遇到了浮点数类型数值无法正常输出的问题。为了解决这个问题,我们可以按照以下步骤进行:
1. 确保您的编译器支持浮点数运算。在某些编译器中,您可能需要启用浮点数支持。 2. 检查您的printf函数是否正确地格式化了浮点数。在您的代码中,您使用了`%5.2f`作为格式化字符串。这表示您希望输出一个占5个字符宽度的浮点数,其中小数点后保留2位有效数字。请确保您的串口助手或终端能够正确解析这个格式。 3. 检查您的ADS1248_Read()函数是否正确地读取了模拟值。如果这个函数返回的数据不正确,那么后续的计算和输出也会受到影响。 4. 检查您的ADS1248_Start()和ADS1248_WaitBusy()函数是否正确地初始化了ADS1248,并确保它在读取数据时没有处于忙碌状态。 5. 如果以上步骤都无法解决问题,您可以尝试使用整数类型(如int或long int)进行计算,并将结果转换为浮点数进行输出。这样可以避免浮点数精度问题。但请注意,这可能会导致一些精度损失。 以下是修改后的代码示例: ```c #include #include // 假设ADS1248_Read()、Change_Channel()、ADS1248_Start()和ADS1248_WaitBusy()已经定义 int main() { int i; int channel = 0; int Data; float R; float resistance; while (1) { Change_Channel(i); ADS1248_Start(ADC_MODE_SINGLECOV); ADS1248_WaitBusy(); Data = ADS1248_Read(); // 使用整数进行计算,避免浮点数精度问题 int numerator = (Data * 2 * 820); int denominator = (8388607 * 8); // 计算电阻值 R = (float)(numerator) / (float)(denominator) + 180; // 输出电阻值 printf("%5.2f, ", R); i++; if (i >= 7) { i = 0; printf("n"); } } return 0; } ``` 请注意,这个示例代码使用了整数进行计算,并将结果转换为浮点数进行输出。这样可以避免浮点数精度问题,但可能会导致一些精度损失。您可以根据自己的需求调整这个示例代码。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1758 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1053 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1931浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
721浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
563浏览 3评论
590浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 02:04 , Processed in 0.834879 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号