OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4280|回复: 2

STM32 TIM3 TROG 触发ADC 询问

[复制链接]

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2015-9-6
在线时间
31 小时
发表于 2015-9-6 09:12:27 | 显示全部楼层 |阅读模式
5金钱
    用的是原子哥V2.2板子做TIM3 TROG 500ms触发ADC实验(没有用到DMA),板子上面的STM_ADC直接接板载3.3v了,但实验下来发现输出的数据由大到小,由小到大这样变化,类似一个波形,而且最大值得出的电压值只有3507(2.825V)。

(串口显示的值是ADC转化值,不是扩大100倍的电压值)

    现将主要配置代码附上,烦请各位帮分析分析,哪里配置还有遗漏或不当,谢谢!
[mw_shl_code=c,true]static void ADC1_Mode_Config(void)//ADC1_Mode_Config(uint32_t ADC_ConvertedVal) { // DMA_InitTypeDef DMA_InitInstructure; ADC_InitTypeDef ADC_InitStruct; NVIC_InitTypeDef NVIC_InitStructure ; RCC_ADCCLKConfig(RCC_PCLK2_Div6); ADC_DeInit(ADC1); ADC_InitStruct.ADC_Mode = ADC_Mode_Independent; ADC_InitStruct.ADC_NbrOfChannel = 1; ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; ADC_InitStruct.ADC_ScanConvMode = DISABLE; ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO; ADC_InitStruct.ADC_DataAlign =ADC_DataAlign_Right; ADC_Init(ADC1,&ADC_InitStruct); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0) ; NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0 ; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 9 ; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE ; NVIC_Init(&NVIC_InitStructure); ADC_ExternalTrigConvCmd(ADC1,ENABLE); ADC_RegularChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_55Cycles5); ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE); ADC_Cmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); }[/mw_shl_code]

[mw_shl_code=c,true]void TIM3_Configration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStruct.TIM_Period = 4999; TIM_TimeBaseInitStruct.TIM_Prescaler = 7199; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct); TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //??TRGO??????????? TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable); TIM_Cmd(TIM3,ENABLE); }[/mw_shl_code]

[mw_shl_code=c,true]/** * @brief This function handles ADC1 and ADC2 global interrupts requests. * @param None * @retval None */ #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) void ADC1_IRQHandler(void) #else void ADC1_2_IRQHandler(void) #endif { if(ADC_GetITStatus(ADC1, ADC_IT_EOC)) { ADC_ClearITPendingBit(ADC1, ADC_IT_EOC); ADC_ConvertedValue = ADC_GetConversionValue(ADC1); sSysFlagBit.CANRx_G = TRUE; } } [/mw_shl_code]


驽马十驾,功在不舍!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-7 21:34:19 | 显示全部楼层
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2015-9-6
在线时间
31 小时
 楼主| 发表于 2015-9-18 13:24:51 | 显示全部楼层
多谢原子哥回复,这段时间调去做其他事物了,一时没有回复,问题已解决,因为在两块不同板子间来回切换调试,ADC端受到干扰了
驽马十驾,功在不舍!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 00:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表