你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

ADC 是不是 不可超過4個 ADC_InjectedSequencerLengthConfig(ADC1,4);

[复制链接]
romter 提问时间:2024-1-30 16:21 / 未解决
  1. define IS_ADC_INJECTED_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x4))

DeviceDriver\StdPeriph_Driver\src\stm32f10x_adc.c

裡面有限制 0x4

我用 ADC_InjectedSequencerLengthConfig(ADC1,4); 4個ADC時 都正常

這樣可4個

adcv1i=ADC1->JDR1; adcv2i=ADC1->JDR2; adcv3i=ADC1->JDR3; 這樣也可 adcv1i=ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1); adcv2i=ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2); adcv3i=ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_3);

無法擴充 加到6個

我要6個ADC讀 6個不同電壓值

試過 修改 增加

//__IO uint32_t JOFR5; // __IO uint32_t JOFR6;

// __IO uint32_t JDR5; // __IO uint32_t JDR6;

\DeviceDriver\Include\stm32f10x.h

/**

  • @brief Analog to Digital Converter */

typedef struct { IO uint32_t SR; __IO uint32_t CR1; IO uint32_t CR2; IO uint32_t SMPR1; __IO uint32_t SMPR2; IO uint32_t JOFR1; IO uint32_t JOFR2; __IO uint32_t JOFR3; IO uint32_t JOFR4; //IO uint32_t JOFR5; // __IO uint32_t JOFR6; IO uint32_t HTR; IO uint32_t LTR; __IO uint32_t SQR1; IO uint32_t SQR2; IO uint32_t SQR3; __IO uint32_t JSQR; IO uint32_t JDR1; IO uint32_t JDR2; __IO uint32_t JDR3; IO uint32_t JDR4; // IO uint32_t JDR5; // __IO uint32_t JDR6; IO uint32_t DR; } ADC_TypeDef;

收藏 评论6 发布时间:2024-1-30 16:21

举报

6个回答
xmshao 回答时间:2024-1-30 16:38:49
每个配置的注入通道都给一个专门的数据寄存器以存放结果,STM32系列一般都是最多4个,这点在手册里有描述。而规则通道则是多个通道共用1个数据寄存器存放结果。
romter 回答时间:2024-1-30 16:59:26

xmshao 发表于 2024-1-30 16:38
每个配置的注入通道都给一个专门的数据寄存器以存放结果,STM32系列一般都是最多4个,这点在手册里有描述。 ...

若是要6個ADC 可否指導個方向??

xmshao 回答时间:2024-1-30 17:33:48
使用注入通道往往是因为有规则通道的使用,希望有更高的转换优先级,所以一般无须太多。你如果通道多,考虑规则通道结合DMA也挺好的。
romter 回答时间:2024-1-30 18:05:54

xmshao 发表于 2024-1-30 17:33
使用注入通道往往是因为有规则通道的使用,希望有更高的转换优先级,所以一般无须太多。你如果通道多,考虑 ...

有點明白了

若不用DMA 可否單個 單個通道 讀取?

官網有無合適的範例? 或是 關鍵指令 可以搜索的?

butterflyspring 回答时间:2024-1-31 11:06:23
romter 发表于 2024-1-30 18:05
[md]有點明白了

若不用DMA 可否單個 單個通道 讀取?

目前还没看到有不用DMA的官方范例。

用DMA是最便利最普遍的方式。 而用中断或查询的方式会非常消耗资源,影响其他代码运行。
所以目前看到官方做的范例都是用DMA传递结果的。

楼主可以参照着用一下的。
xmshao 回答时间:2024-1-31 11:23:48
看菜吃饭吧。看具体应用,没有固定不变的。不用DMA的话实现单个通道的逐个读取当然也是可能的,主要看具体的应用需求。至于是基于查询方式 还是中断方式你根据需求来定。如果说对DMA不熟悉,参照例程来也可以很快上手。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版