STM32H7实现ADC等周期采集(定时器触发+DMA传输)

定时器输出的PWM通道设置的是2s的周期,50%占空比,方便没有示波器的条件下观察结果。
数据会2s采集一次,500ms打印一次。
CubeMX工程下载:
主函数代码

u16 buffer[128];
int main(void)
{
    u16 adcx;
    //Cache_Enable();                 //打开L1-Cache
    HAL_Init();                           //初始化HAL库
    Stm32_Clock_Init(200, 2, 2, 2); //设置时钟,400Mhz
    delay_init(400);                        //延时初始化
    uart_init(115200);                  //串口初始化
    printf("hello\r\n");
    MX_DMA_Init();
    MX_ADC1_Init();
	MX_TIM3_Init();
	
	HAL_ADC_Start_DMA(&hadc1, (uint32_t *)buffer, 16);
	HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4);
	

    while (1)
    {
        printf("\r\nvalue:");
        for (int i = 0; i < 32; i++)
        {
            if (i % 8 == 0)   printf("\r\n");
            printf("%d\t", buffer[i]);              //返回最近一次ADC1规则组的转换结果
        }
        delay_ms(500);
    }
}

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
    printf("DMA transfer complete\r\n");
}
void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef *hadc)
{
    printf("DMA Half transfer complete\r\n");
}

void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
{
    printf("DMA transfer error\r\n");
}



void Error_Handler(void)
{
    /* USER CODE BEGIN Error_Handler_Debug */
    /* User can add his own implementation to report the HAL error return state */

    /* USER CODE END Error_Handler_Debug */
}

数据读取效果:
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值