刚接触stm32~ 最近在裸奔情况下实现了基于stm32f103+ADS1248的ADC,将裸奔程序移植到RTX上后,将延迟修改为os_dly_wait()形式(原本是采用循环的形式),数据直接就不能用了,,,
之后改回循环模式实现延迟,,,加上一个开关定时器的任务(用于实现开启电机),数据再一次崩了~~有时电机转的时候正常,当中断关闭(关闭电机)时,数据绝对出问题~~
网上找不到相关的资料~~ 恳请大神们赐教!!
延迟:
- /**
- * @brief 延迟.
- * @param None.
- * @note 延迟时间度量
- * @retval None
- */
- void Delay(void)
- {
- // os_dly_wait(3); // 延迟ms个滴答节拍
- uint16_t i,j;
- for(i=0;i<500;i++)
- {
- for(j=0;j<10;j++);
- };
- }
复制代码
ADC任务:
- __task void adcTask (void) {
- ADS1248_Init(ADC_GAIN_16|ADC_SPS_20); //初始化 AD1248
- int8_t chanel = 0;
- for (;;) {
- int32_t Data;
- Data = ADS1248_Channel_Data(chanel);
- chanelDataArray[chanel] = Data;
- chanel++;
- if(chanel==7)
- {
- chanel=0;
- };
- os_dly_wait(10);
- }
- }
复制代码
电机任务:
- __task void testTask (void) {
- BSP_STEP_MOTOR_Init(); // 初始化电机引脚配置
- for (;;) {
- if(STEP_MOTOR_Msg.Step > 0)
- {
- tsk_lock(); //加了也没用~~
- HAL_TIM_Base_Start_IT(&htim1);
- tsk_unlock();
- }
- os_dly_wait(10);
- }
- }
复制代码
初始化任务:
- __task void initTask (void) {
-
- // t_adc = os_tsk_create(adcTask,3);
- t_adc = os_tsk_create(adcTask,1);
- t_printf = os_tsk_create(printfTask,1);
- os_tsk_create(testTask,1);
- os_tsk_delete_self();
- }
复制代码
以下是打印的数据:
ä¸æå
³éååæ°æ®å¯¹æ¯
åå ä¸è¯¦
|
评分
查看全部评分
感谢问题及时处理~