色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    1206

    瀏覽量

    52175
  • CLK
    CLK
    +關注

    關注

    0

    文章

    127

    瀏覽量

    17183
  • ADC
    ADC
    +關注

    關注

    0

    文章

    110

    瀏覽量

    16845
  • GD32F450
    +關注

    關注

    1

    文章

    11

    瀏覽量

    6660
  • RTThread
    +關注

    關注

    8

    文章

    132

    瀏覽量

    40907
收藏 人收藏

    評論

    相關推薦

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

    在上一篇文章中,我實現了在keil中給梁山派移植RT-Thread Nano,但在官方的移植教程中,除了系統的移植,還有在 RT-Thread Nano 上添加UART控制臺與 FinSH的教程,所以我在本文中將實現在梁山派的N
    的頭像 發表于 09-25 15:40 ?2067次閱讀
    梁山派<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 ?1808次閱讀
    梁山派<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 ?1824次閱讀
    <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 ?3050次閱讀
    <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 ?2223次閱讀
    <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 ?931次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>開發</b><b class='flag-5'>GD32F450</b>使用scons<b class='flag-5'>添加</b>新的文件夾
    主站蜘蛛池模板: 成人免费看片45分钟| 中国xxxxxxxxx孕交| 久久综合色一综合色88| 国产精品一久久香蕉国产线看| wwwxx日本| china中国gay偷拍| 99爱在线观看| adc免费观看| 99热久久久无码国产精品性麻豆 | 亚洲高清视频一区| 甜宠溺H宝贝嗯撞PLAY啊| 日本人HD18HD18| 日本无码毛片久久久九色综合| 日本电影护士| 软糯白嫩双性受h| 涩涩电影网| 为什么丈夫插我我却喜欢被打着插| 手机在线免费看毛片| 失禁 调教 刺激 哭喊男男| 外女思春台湾三级| 亚洲成片在线看| 亚洲伊人精品综合在合线| 一区三区不卡高清影视| 中国老妇xxxhd| 99久久久国产精品免费调教| XXXchinese国产HD| 东北女人奶大毛多水多| 国产精品国产三级国产专区53 | 啦啦啦WWW在线观看免费高清版| 久久免费精品视频| 毛茸茸womansex| 欧美性受xxxx狂喷水| 日韩欧美精品有码在线播放免费 | 国产白丝精品爽爽久久久久久蜜臀 | 国产AV在线传媒麻豆| 国产精品香蕉视频在线| 狠狠色丁香婷婷久久综合| 久久两性视频| 欧美日韩亚洲成人| 无码人妻少妇色欲AV一区二区| 亚洲精品福利一区二区在线观看|