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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版