| **银杏科技有限公司旗下技术文档发布平台** |||| |技术支持电话|**0379-69926675-801**||| |技术支持邮件|Gingko@vip.163.com||| ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | V1.0 | 2020-02-28 | zh. | 初次建立 | ===== iCore4T_RTT_4_添加ADC设备驱动===== 通过前几个例程的介绍我们制作出了最基础的BSP工程,那么我们想利用更多的外设资源,实现更丰富的功能怎么办呢?今天我给大家分享一下STM32H750 ADC设备驱动的添加方法及使用。 ==== 一、配置ADC相应的GPIO,选择ADC时钟源 ==== * 1.1 iCore4T ARM+FPGA双核心板共有4路16bit ADC,其中两路用于板载电源监控,两路可供用户使用。分别是为PA0(ADC1_INP6),PA6(ADC12_INP3),PC2(ADC3_INP0),PC3(ADC3_INP1)。然后我们打开../bsp/stm32/stm32h750-gingko-icore4t/board/CubeMX_Config来进行ADC IO配置,注意这里仍然是只配置IO,其他参数不用理会,然后选择ADC的时钟源。配置完成后点击CREATE CODE。 {{ :icore4t:iCore4T_RTT_4_1.png?direct |}} {{ :icore4t:iCore4T_RTT_4_2.png?direct |}} * 1.2 CubeMx生成工程后,我们只保留红色方框内的文件,其他的两个文件夹可以删除掉。 {{ :icore4t:iCore4T_RTT_4_3.png?direct |}}            * 1.3 复制刚刚生成的src文件夹maic.c文件中的函数SystemClock_Config(void)到board.c。这里内核初始化时要调用该函数进行时钟配置。          ==== 二、修改kconfig文件,增加menuconfig菜单配置中ADC选项。 ==== {{ :icore4t:iCore4T_RTT_4_4.png?direct |}}           ==== 三、打开menuconfg,使能ADC1(ADC1_INP16对核心板输入电源进行监控,所以我们以此为例)。 ==== {{ :icore4t:iCore4T_RTT_4_5.png?direct |}}          ==== 四、使用scons命令生成MDK5工程,打开并进行编译。 ==== * 我们编译发现会有错误产生,原因为RTT当前版本的ADC驱动对H7系列还不算完善,所以这里我们进行稍稍的修改。 {{ :icore4t:iCore4T_RTT_4_6.png?direct |}} * 4.1 修改adc_config.h文件中的内容 {{ :icore4t:iCore4T_RTT_4_7.png?direct |}} {{ :icore4t:iCore4T_RTT_4_8.png?direct |}} * 4.2 修改adc_config.c文件中 stm32_adc_enable()函数的内容,红色方框为增加的内容。 {{ :icore4t:iCore4T_RTT_4_9.png?direct |}}           * 4.3 修改adc_config.c文件中 stm32_adc_get_channel函数的内容。 {{ :icore4t:iCore4T_RTT_4_10.png?direct |}}          * 4.4 修改adc_config.c文件中 stm32_get_adc_value()函数的内容。 {{ :icore4t:iCore4T_RTT_4_11.png?direct |}}          * 4.5 修改完以上内容,重新编译。 {{ :icore4t:iCore4T_RTT_4_12.png?direct |}}          ==== 五、烧录进iCore4T核心板 ==== * 烧录进去后我们可以发现能够找到ADC1设备,并读出通道16的值为0x4F1F,我们将其转变成模拟量:(20255/65536)*2.5*6 = 4.63(V) {{ :icore4t:iCore4T_RTT_4_13.png?direct |}}              ==== 六、源代码 ==== 源代码可以移步这里下载: 链接:https://pan.baidu.com/s/1fcLU4WaRDlgr0mNYwZj1Yg  提取码:zstq