OpenEdv-开源电子网

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

stm32h743定时器3触发ADC采集,ADC没有输出?

[复制链接]

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-6-4
在线时间
13 小时
发表于 2019-9-29 08:41:15 | 显示全部楼层 |阅读模式
1金钱

如图

如图

当选择Tim3和上升沿检测时,ADC无输出

当选择ADC_EXTERNALTRIGCONVEDGE_NONE时,ADC有输出

请问一下怎么才可以在选择ADC_EXTERNALTRIG_T3_TRGO  和ADC_EXTERNALTRIGCONVEDGE_RISING时ADC有数据输出?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-5-9
在线时间
20 小时
发表于 2019-9-30 10:57:38 | 显示全部楼层
把tim3的程序传上来看看
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-6-4
在线时间
13 小时
 楼主| 发表于 2019-10-4 13:44:40 | 显示全部楼层
res13488726312 发表于 2019-9-30 10:57
把tim3的程序传上来看看

TIM_HandleTypeDef TIM3_Handler;      //定时器句柄
void TIM3_Init(u16 arr,u16 psc)//arr=5000-1  psc=20000-1
{  
    TIM3_Handler.Instance=TIM3;                          //通用定时器3
    TIM3_Handler.Init.Prescaler=psc;                     //分频
    TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
    TIM3_Handler.Init.Period=arr;                        //自动装载值
    TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子
    HAL_TIM_Base_Init(&TIM3_Handler);
   
    HAL_TIM_Base_Start_IT(&TIM3_Handler); //使能定时器3和定时器3更新中断:TIM_IT_UPDATE   
}

//定时器底册驱动,开启时钟,设置中断优先级
//此函数会被HAL_TIM_Base_Init()函数调用
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
    if(htim->Instance==TIM3)
        {
                __HAL_RCC_TIM3_CLK_ENABLE();            //使能TIM3时钟
                HAL_NVIC_SetPriority(TIM3_IRQn,1,3);    //设置中断优先级,抢占优先级1,子优先级3
                HAL_NVIC_EnableIRQ(TIM3_IRQn);          //开启ITM3中断   
        }  
}

//定时器3中断服务函数
void TIM3_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM3_Handler);
}

//定时器3中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim==(&TIM3_Handler))
    {
                 u16 adcx;
             float temp;
                adcx=Get_Adc_Average(ADC_CHANNEL_19,20);//获取通道19的转换值,20次取平均
                temp=(float)adcx*(3.3/65536);         //获取计算后的带小数的实际电压值,比如3.1111
                adcx=temp;                            //赋值整数部分给adcx变量,因为adcx为u16整形
        LED1_Toggle;        //LED0反转
    }
}
回复

使用道具 举报

2

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
377
金钱
377
注册时间
2019-8-13
在线时间
108 小时
发表于 2019-10-4 20:51:42 | 显示全部楼层
#define ADC_EXTERNALTRIGCONV_T3_TRGO   ((uint32_t)ADC_CR2_EXTSEL_3)

宏定义看下
回复

使用道具 举报

2

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
377
金钱
377
注册时间
2019-8-13
在线时间
108 小时
发表于 2019-10-4 20:53:11 | 显示全部楼层
#define ADC_EXTERNALTRIGCONV_T3_TRGO   ((uint32_t)ADC_CR2_EXTSEL_3)
宏定义看下
回复

使用道具 举报

10

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2018-6-2
在线时间
77 小时
发表于 2019-10-15 14:40:24 | 显示全部楼层
定时器触发需要与dma配合使用吧,这样在定时中断里读不需要定时器触发吧,普通定时器+ad就可以实现啊
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-6-4
在线时间
13 小时
 楼主| 发表于 2019-10-18 16:32:58 | 显示全部楼层
ziblove1 发表于 2019-10-4 20:51
#define ADC_EXTERNALTRIGCONV_T3_TRGO   ((uint32_t)ADC_CR2_EXTSEL_3)

宏定义看下

嗯,好的,我试试
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-6-4
在线时间
13 小时
 楼主| 发表于 2019-10-18 16:51:04 | 显示全部楼层

试了一下,还是不行
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-6-4
在线时间
13 小时
 楼主| 发表于 2019-10-18 16:52:09 | 显示全部楼层
淘淘追梦 发表于 2019-10-15 14:40
定时器触发需要与dma配合使用吧,这样在定时中断里读不需要定时器触发吧,普通定时器+ad就可以实现啊

那意思是,在这里加上dma就行吗
回复

使用道具 举报

10

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2018-6-2
在线时间
77 小时
发表于 2019-10-21 08:42:29 | 显示全部楼层
韩同学叫园园 发表于 2019-10-18 16:52
那意思是,在这里加上dma就行吗

定时器触发应该有两种方式吧:
1.在定时器中断里进行软件采集ad
2.用pwm触发ad采用,用dma搬运数据,节省cpu的工作时间
如果你方便的话可以留一个联系方式吗?我最近也在搞这个,正在查方案
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-6-4
在线时间
13 小时
 楼主| 发表于 2019-10-21 17:08:25 | 显示全部楼层
淘淘追梦 发表于 2019-10-21 08:42
定时器触发应该有两种方式吧:
1.在定时器中断里进行软件采集ad
2.用pwm触发ad采用,用dma搬运数据,节 ...

微信13629279398
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-2 19:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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