当前位置:   article > 正文

at32f403 rtthread adc_at32f403a adc数据错误

at32f403a adc数据错误

环境

	 1.硬件环境
	 2.软件环境
  • 1
  • 2

硬件环境

    使用AT-START  AT32F403AVGT7 开发板
  • 1

软件环境

    使用rtthread studio 创建芯片构建
  • 1

具体软件配置如下

  1. 文件—》新建—》rtthread 项目
    在这里插入图片描述

    2.打开adc 组件
    在这里插入图片描述
    3.自动生成adc读取例子
    在这里插入图片描述
    4.使用上述配置 保存自动生成代码并编译后 发现电压不准
    在这里插入图片描述

5.另外需要打开 BSP_USING_ADC1 这个宏定义 在board.h 中

问题排查

#ifdef BSP_USING_ADC1  
    if(ADCx == ADC1)
    {   
        /* ADC1 & GPIO clock enable */
        RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_ADC1 | RCC_APB2PERIPH_GPIOA | RCC_APB2PERIPH_GPIOB | RCC_APB2PERIPH_GPIOC,ENABLE);
		
        /* Configure ADC Channel as analog input */      
        GPIO_StructInit(&GPIO_InitStruct);
        GPIO_InitStruct.GPIO_Pins = GPIO_Pins_0 | GPIO_Pins_1 | GPIO_Pins_2 | GPIO_Pins_3 | GPIO_Pins_4 | GPIO_Pins_5;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_ANALOG;
        GPIO_Init(GPIOC, &GPIO_InitStruct);
        
    }
#endif
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

上述代码中发现没有对adc 的io 引脚进行 配置

GPIO_Init(GPIOC, &GPIO_InitStruct);
  • 1

修改为

GPIO_Init(GPIOA, &GPIO_InitStruct); 
  • 1

rtthread studio 生成的是channel 5 对应的引脚为 PA5

总结

rtthread studio 生成代码不能够直接运行,rtthread 只做了简单的时钟和串口的适配,其他驱动需要自己核对msp 级别的代码,所以在使用到其他的外设需要注意一下。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/67517
推荐阅读
  

闽ICP备14008679号