中级会员
 
- 积分
- 226
- 金钱
- 226
- 注册时间
- 2014-11-24
- 在线时间
- 64 小时
|
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这变量类型为非常双精度类型侧没这问题.
原子哥这是怎么原因,有什么办法解决.
|
|