在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RT-Thread開發GD32F450添加adc外設

冬至子 ? 來源:YZRD ? 作者:YZRD ? 2023-10-08 15:04 ? 次閱讀

開發板使用的是gd32f450zk,env工具使用的版本是1.3.5,rtthread版本是5.0.0

添加adc外設的步驟如下:

步驟1: 查看開發板的電路原理圖,確定adc的使用引腳,使用的是引腳PF6,即adc012_IN4,如下圖:

1.jpg

步驟2: 使用env工具開啟adc外設,并選擇配置相應的adc外設,如下如

1.jpg

2.jpg

步驟3:打開drv_adc.c文件,修改代碼

1.jpg

修改后代碼如下,也可以全部修改為GET_PIN(F, 6)

#ifdef BSP_USING_ADC2
{
ADC2,
RCU_ADC2,
{
GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3),
GET_PIN(F, 6), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7),
GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1),
GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5),
},
&adc2,
"adc2",
},
#endif

還需要修改的函數有:

static rt_err_t gd32_adc_enabled(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled);
static rt_err_t gd32_adc_convert(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value);

1.jpg

提示ADC_REGULAR_CHANNEL 未定義。改為ADC_ROUTINE_CHANNEL,同時將其余報錯進行修改,修改后的代碼如下:

/**

@brief ADC enable

This function enable adc.

@param device, channel, enabled
@retval None
*/
static rt_err_t gd32_adc_enabled(struct rt_adc_device device, rt_uint32_t channel, rt_bool_t enabled)
{
uint32_t adc_periph;
struct gd32_adc * adc = (struct gd32_adc )device->parent.user_data;
if (channel >= MAX_EXTERN_ADC_CHANNEL)
{
LOG_E("invalid channel");
return -RT_EINVAL;
}
adc_periph = (uint32_t )(adc->adc_periph);
if (enabled == ENABLE)
{
gd32_adc_gpio_init(adc->adc_clk, adc->adc_pins[channel]);
adc_channel_length_config(adc_periph, ADC_ROUTINE_CHANNEL, 1);
adc_data_alignment_config(adc_periph, ADC_DATAALIGN_RIGHT);
#if defined SOC_SERIES_GD32F4xx
adc_external_trigger_source_config(adc_periph, ADC_ROUTINE_CHANNEL, ADC_EXTTRIG_ROUTINE_EXTI_11);
#else
adc_external_trigger_source_config(adc_periph, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
#endif
adc_external_trigger_config(adc_periph, ADC_ROUTINE_CHANNEL, ENABLE);
#if defined SOC_SERIES_GD32F4xx
adc_routine_channel_config(adc_periph, 0, channel, ADC_SAMPLETIME_480);
#else
adc_regular_channel_config(adc_periph, 0, channel, ADC_SAMPLETIME_13POINT5);
#endif
adc_enable(adc_periph);
/
ADC calibration and reset calibration /
adc_calibration_enable(adc_periph);
}
else
{
adc_disable(adc_periph);
}
return 0;
}
/

@brief convert adc.

This function get adc value.

@param device, channel, value
@retval None
*/
static rt_err_t gd32_adc_convert(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value)
{
uint32_t adc_periph;
struct gd32_adc * adc = (struct gd32_adc *)(device->parent.user_data);
if (!value)
{
LOG_E("invalid param");
return -RT_EINVAL;
}
adc_periph = (uint32_t )(adc->adc_periph);
adc_software_trigger_enable(adc_periph, ADC_ROUTINE_CHANNEL);
while(!adc_flag_get(adc_periph, ADC_FLAG_EOC)){};
// clear flag
adc_flag_clear(adc_periph, ADC_FLAG_EOC);
*value = adc_routine_data_read(adc_periph);
return 0;
}
步驟4:編譯正常,下載到開發板,進行測試,測試指令如下:

msh />adc
Usage:
adc probe - probe adc by name
adc read - read adc value on the channel
adc disable - disable adc channel
adc enable - enable adc channel

1.jpg

步驟5:測試發現輸入并無變化的情況下,讀取的值一直在變,并且變化太大,讀取到的值快速減小。

說明配置的有問題,查找原因,發現再使能adc外設的時候,沒有對引腳的時鐘進行使能,再static void gd32_adc_gpio_init(rcu_periph_enum adc_clk, rt_base_t pin)函數中增加使能引腳時鐘,修改如下:

rcu_periph_clock_enable(RCU_GPIOF);

修改之后測試,測試結果

1.jpg

讀取的值不會變化很大,而是再一定的范圍內變化。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • GPIO
    +關注

    關注

    16

    文章

    1216

    瀏覽量

    52252
  • CLK
    CLK
    +關注

    關注

    0

    文章

    127

    瀏覽量

    17196
  • ADC
    ADC
    +關注

    關注

    0

    文章

    111

    瀏覽量

    16845
  • GD32F450
    +關注

    關注

    1

    文章

    11

    瀏覽量

    6663
  • RTThread
    +關注

    關注

    8

    文章

    132

    瀏覽量

    40947
收藏 人收藏

    評論

    相關推薦

    梁山派GD32F450/470-RT-Thread Nano移植(二)

    在上一篇文章中,我實現了在keil中給梁山派移植RT-Thread Nano,但在官方的移植教程中,除了系統的移植,還有在 RT-Thread Nano 上添加UART控制臺與 FinSH的教程,所以我在本文中將實現在梁山派的N
    的頭像 發表于 09-25 15:40 ?2102次閱讀
    梁山派<b class='flag-5'>GD32F450</b>/470-<b class='flag-5'>RT-Thread</b> Nano移植(二)

    梁山派GD32F450/470-RT-Thread Nano移植(三)

    RT-Thread FinSH 是 RT-Thread 的命令行組件(shell),提供一套供用戶在命令行調用的操作接口,主要用于調試或查看系統信息。
    的頭像 發表于 09-26 14:50 ?1839次閱讀
    梁山派<b class='flag-5'>GD32F450</b>/470-<b class='flag-5'>RT-Thread</b> Nano移植(三)

    rt-thread studio新建gd32f450工程

    rt-thread studio 軟件版本是:2.2.6;開發板的軟件包是:GD32450Z-GD-EVAL版本是V1.0.1;開發板使用兆易的官方
    的頭像 發表于 09-28 14:17 ?1837次閱讀
    <b class='flag-5'>rt-thread</b> studio新建<b class='flag-5'>gd32f450</b>工程

    RT-Thread開發GD32F450添加串口外設的方法

    開發板使用的是gd32f450zk,env工具使用的版本是1.3.5,rtthread版本是5.0.0。
    的頭像 發表于 09-28 17:01 ?3068次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F450</b><b class='flag-5'>添加</b>串口<b class='flag-5'>外設</b>的方法

    星空派(GD開發板介紹

    本帖最后由 jf_39160458 于 2021-9-11 17:41 編輯 `星空派(GD開發板板載GD32F450ZG芯片和廣和通L610 4G模組,搭載RT-Thread
    發表于 06-26 18:08

    移植RT-Thread操作系統到GD32星空派開發

    。它把面向對象的設計方法應用到實時系統設計中,使得代碼風格優雅、架構清晰、系統模塊化并且可裁剪性非常好。本次移植所使用開發板為GD32星空派: 2 代碼下載目前RT-Thread提供很多下載方式,有百度網
    發表于 10-13 15:56

    移植RT-Thread操作系統到GD32星空派開發

    。它把面向對象的設計方法應用到實時系統設計中,使得代碼風格優雅、架構清晰、系統模塊化并且可裁剪性非常好。本次移植所使用開發板為GD32星空派: 2 代碼下載目前RT-Thread提供很多下載方式,有百度網
    發表于 10-13 16:06

    基于RT-Thread Studio的ADC外設使用方案介紹

    1、基于RT-Thread Stduio使用ART-Pi的ADC外設1. 打開 RT-Thread Stduio,左上角新建 RT-Thread
    發表于 03-28 16:57

    GD32F4系列芯片移植RTOS Demo工程 GD32F407移植FreeRTOS GD32F407移植RT-Thread

    GD32F4系列移植FreeRTOS和RT-Thread工程例程GD32F407/GD32F450
    發表于 06-07 22:10

    基于GD32F310開發板在rt-thread添加finsh及其shell功能

    1、GD32F310開發板試用+finsh/shell添加與進程STACK優化  上一次只是移植了rt-thread nano的內核,但rt-thr
    發表于 11-08 16:05

    GD32F450開發板工程RT系統啟動錯誤如何解決呢?

    我自己設計的GD32F405的板子,在RT-Thread Studio里用的GD32F450開發板工程,改了一下RAM大小,從128改成了192然后把SDRAM、eth刪除,在主函數
    發表于 02-21 11:33

    RT-Thread移植到GD32F150系列MCU

    RT-Thread移植到GD32F150系列MCU
    發表于 12-07 19:36 ?7次下載
    <b class='flag-5'>RT-Thread</b>移植到<b class='flag-5'>GD32F</b>150系列MCU

    RT-Thread文檔_ADC 設備

    RT-Thread文檔_ADC 設備
    發表于 02-22 18:33 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>ADC</b> 設備

    RT-Thread開發GD32F450添加spiflash外設的步驟

    gd32f450工程上使用env工具增加spi falsh。
    的頭像 發表于 08-07 14:58 ?2240次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F450</b><b class='flag-5'>添加</b>spiflash<b class='flag-5'>外設</b>的步驟

    RT-Thread開發GD32F450使用scons添加新的文件夾

    開發板使用的是gd32f450zk,想在工程中新建文件夾,通過scons管理
    的頭像 發表于 10-08 16:44 ?943次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F450</b>使用scons<b class='flag-5'>添加</b>新的文件夾
    主站蜘蛛池模板: 日本黄网站高清色大全| 潘金莲国产三级视频在线| 欧美一区二区三区不卡免费观看| www.午夜色| 天天躁狠狠躁夜夜躁2021| 视频一区二区在线播放| 精品一区二区三区三区| 亚洲瑟瑟网| 色婷婷六月| 久久亚洲国产欧洲精品一| 国产一区二区三区在线观看视频 | 综合五月婷婷| 五月天丁香婷婷网| 日本黄色大片网站| 黄色免费片| 午夜视频在线观看一区二区| 免费视频在线视频观看1| 亚洲娇小性色xxxx| 美女扒开尿口让男人30视频| 天堂网资源| 扛着高跟鞋丝袜腿呻吟视频| 成年片色大黄全免费网址| 天天干夜夜添| 日本人69xxx| 伊人蕉久| 免费看逼网站| 一级免费看| 88av影院| 在线观看a网站| 欧美成人精品欧美一级乱黄| www.嫩草影院| 国产成 人 综合 亚洲网| 美女扒开尿口给男人桶动态图| 四虎影院美女| 国内一级野外a一级毛片| 思思久久好好热精品国产| 免费观看视频在线观看| 亚洲成人在线电影| 精品成人在线| 免费一级特黄3大片视频| 午夜视频在线观看免费观看在线观看|