你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f103+RTX+ADS1248

[复制链接]
Tobey_YF 提问时间:2016-8-14 21:54 /
     刚接触stm32~  最近在裸奔情况下实现了基于stm32f103+ADS1248的ADC,将裸奔程序移植到RTX上后,将延迟修改为os_dly_wait()形式(原本是采用循环的形式),数据直接就不能用了,,,

    之后改回循环模式实现延迟,,,加上一个开关定时器的任务(用于实现开启电机),数据再一次崩了~~有时电机转的时候正常,当中断关闭(关闭电机)时,数据绝对出问题~~  
网上找不到相关的资料~~  恳请大神们赐教!!

延迟:
  1. /**
  2.   * @brief  延迟.
  3.   * @param  None.
  4.   * @note   延迟时间度量
  5.   * @retval None
  6.   */
  7. void Delay(void)
  8. {
  9. //        os_dly_wait(3);                                                                                                                                                        // 延迟ms个滴答节拍
  10.         uint16_t i,j;
  11.         for(i=0;i<500;i++)
  12.         {
  13.                  for(j=0;j<10;j++);
  14.         };
  15. }
复制代码


ADC任务:
  1. __task void adcTask (void) {
  2.         ADS1248_Init(ADC_GAIN_16|ADC_SPS_20);             //初始化 AD1248
  3.         int8_t chanel = 0;
  4.   for (;;) {
  5.                 int32_t Data;

  6.                 Data = ADS1248_Channel_Data(chanel);

  7.                 chanelDataArray[chanel] = Data;
  8.                 chanel++;
  9.                 if(chanel==7)
  10.                 {
  11.                         chanel=0;
  12.                 };        
  13.                 os_dly_wait(10);
  14.   }
  15. }
复制代码


电机任务:
  1. __task void testTask (void) {
  2.         BSP_STEP_MOTOR_Init();                        // 初始化电机引脚配置
  3.   for (;;) {
  4.                 if(STEP_MOTOR_Msg.Step > 0)
  5.                 {
  6.                         tsk_lock(); //加了也没用~~
  7.                         HAL_TIM_Base_Start_IT(&htim1);
  8.                         tsk_unlock();
  9.                 }
  10.                 os_dly_wait(10);
  11.   }
  12. }
复制代码


初始化任务:
  1. __task void initTask (void) {
  2.         
  3. //  t_adc = os_tsk_create(adcTask,3);
  4.         t_adc = os_tsk_create(adcTask,1);
  5.         t_printf = os_tsk_create(printfTask,1);
  6.         os_tsk_create(testTask,1);
  7.         os_tsk_delete_self();
  8. }
复制代码


以下是打印的数据:

中断关闭前后数据对比

中断关闭前后数据对比


原因不详

原因不详


3.jpg

收藏 评论3 发布时间:2016-8-14 21:54

举报

3个回答
Tobey_YF 回答时间:2016-8-15 20:03:58
延时问题通过rebuild all解决了~  启用硬件中断造成AD数据混乱还是没能解决,,,  
Tobey_YF 回答时间:2016-8-16 13:50:50
结贴!! 问题并不是延迟~~  而在于SPI2的时钟频率,,,

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

zero99 回答时间:2016-8-17 08:47:37
Tobey_YF 发表于 2016-8-16 13:50
结贴!! 问题并不是延迟~~  而在于SPI2的时钟频率,,,

感谢问题及时处理~

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版