不能停止通过OS_TIMER继续ADC采样

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
首歌
离线
最后看到:8个月1周前
加入:2016-04-14 09:49
不能停止通过OS_TIMER继续ADC采样

我想在1min后停止继续ADC采样。

1、配置gpio
hw_gpio_set_pin_function (HW_GPIO_PORT_1
HW_GPIO_PIN_3,
HW_GPIO_MODE_INPUT,
HW_GPIO_FUNC_ADC);

2、配置dma
DMA_setup dma_conf = {
.channel_number = HW_DMA_CHANNEL_0,
.bus_width = HW_DMA_BW_HALFWORD,
.irq_enable = false,
.irq_nr_of_trans = 1,
.dreq_mode = HW_DMA_DREQ_TRIGGERED,
.a_inc = HW_DMA_AINC_FALSE,
.b_inc = HW_DMA_BINC_TRUE,
.circular = HW_DMA_MODE_CIRCULAR,
.dma_prio = HW_DMA_PRIO_7,
.dma_idle = HW_DMA_IDLE_BLOCKING_MODE,
.dma_init = HW_DMA_INIT_AX_BX_AY_BY,
.dma_req_mux = HW_DMA_TRIG_ADC,
.src_address = (uint32_t) (&GPADC - > GP_ADC_RESULT_REG),
mg_ad_samp_ret_buf .dest_address = (uint32_t),
. length = 60,
};
hw_dma_channel_initialization (&dma_conf);
hw_dma_channel_enable (HW_DMA_CHANNEL_0 HW_DMA_STATE_ENABLED);

3、配置gpadc
source_handle = ad_gpadc_open (MY_GPADC);
ad_gpadc_acquire ();
hw_gpadc_reset ();
hw_gpadc_set_clock (HW_GPADC_CLOCK_DIGITAL);
hw_gpadc_set_input_mode (HW_GPADC_INPUT_MODE_SINGLE_ENDED);
hw_gpadc_set_input (MG_CFG_SAMP_PW_GPADC);
hw_gpadc_set_sample_time (7);
hw_gpadc_set_oversampling (2);
hw_gpadc_set_continuous(真正的);
hw_gpadc_set_interval (8);
hw_gpadc_set_input_attenuator_state(假);
hw_gpadc_set_chopping(真正的);
hw_gpadc_set_ldo_constant_current(真正的);
hw_gpadc_set_ldo_dynamic_current(真正的);
hw_gpadc_set_ldo_delay (100);
REG_SETF(GPADC, GP_ADC_CTRL2_REG, GP_ADC_DMA_EN, true);
hw_gpadc_enable ();
hw_gpadc_start ();

4、config os_timer
tmr_handle = OS_TIMER_CREATE("myTimer", OS_MS_2_TICKS(60000), pdFALSE, NULL, my_timer_cb);
ASSERT_ERROR (tmr_handle);
OS_TIMER_RESET (tmr_handle OS_TIMER_FOREVER);
......
static void my_timer_cb(OS_TIMER timer_handle)

OS_TASK_NOTIFY_FROM_ISR (my_task_handle MY_TASK_NOTIFY_TIMER OS_NOTIFY_SET_BITS);

1+2+3:定时器不工作。
1+2:定时器可以正常工作。

关键词:
设备:
MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨的歌,

嗨的歌,

请注意,SDK不支持adc functionallity DMA和适配器,除此之外,我不认为定时器设置的adc,你提到计时器不工作,你的意思是你已经把它的回调没有发生?

远的我可以告诉你粘贴的代码,您正在使用adc适配器的功能,然后使用低水平的司机为了设置adc functionallity这不是一个好的做法,我不知道会发生什么,如果你这样做,你应该使用lld或适配器。另外,不要使用OS_TASK_NOTIFY_FROM_ISR来通知你的任务,只需使用普通的OS_TASK_NOTIFY即可。因为你是使用DMA和没有适配器,将包括DMA functionallity您还需要照顾的情况下设备将睡眠和醒来,由于没有直接存储器存取将没有一个停止设备时睡觉。

Thansk MT_dialog