OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2749|回复: 1

STM32H7中断函数中运算双精度数返回被打断函数后数据出错

[复制链接]

1

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2014-11-24
在线时间
64 小时
发表于 2019-12-26 10:52:35 | 显示全部楼层 |阅读模式
10金钱
原子哥,我用ST32H7跑UCOSIII系统+每毫秒外设打断信号,有外设中断信号侧会打断系统任务进入外设中断函数.只要在外设中断函数中赋予值给双精度类型数返回被打断的任务后任务中原来赋予另外一变量的值会变.
系统任务中调用的函数:
double test_buf;
void ServoSysError ( void )
{
     u8 i;
    for(i=0;i<3;i++)
    {
        test_buf = 1.0;           //测试设定
        if ( test_buf<0.5 )        
        {
            test_buf = 0.0;  
        }


   }
}
外设中断函数:
double tset_num;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
   OSIntExit();
   if(GPIO_Pin==GPIO_PIN_1)
   {
      if(GPIO_INT==1)
       tset_num=0.0;   
  }
  OSIntEnter();
}

如果在test_buf = 1.0; if ( test_buf<0.5 )这期间被外设打断进入中断函数返回后test_buf 的值会是tset_num这个的值.如果tset_num这变量类型为非常双精度类型侧没这问题.
原子哥这是怎么原因,有什么办法解决.

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

412

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2722
金钱
2722
注册时间
2019-8-14
在线时间
415 小时
发表于 2019-12-26 12:11:31 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 01:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表