Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tools-mirror
Micropython
提交
22099ab8
M
Micropython
项目概览
tools-mirror
/
Micropython
12 个月 前同步成功
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
Micropython
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
22099ab8
编写于
9月 12, 2019
作者:
D
Damien George
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
stm32/machine_adc: Fix build for F4 and L4 MCUs that only have ADC1.
上级
356a728b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
9 deletion
+16
-9
ports/stm32/machine_adc.c
ports/stm32/machine_adc.c
+16
-9
未找到文件。
ports/stm32/machine_adc.c
浏览文件 @
22099ab8
...
...
@@ -33,6 +33,12 @@
#define ADC_V2 (0)
#endif
#if defined(STM32F4) || defined(STM32L4)
#define ADCx_COMMON ADC_COMMON_REGISTER(0)
#elif defined(STM32F7)
#define ADCx_COMMON ADC123_COMMON
#endif
#if defined(STM32F0) || defined(STM32L0)
#define ADC_STAB_DELAY_US (1)
#define ADC_TEMPSENSOR_DELAY_US (10)
...
...
@@ -122,7 +128,7 @@ STATIC void adc_config(ADC_TypeDef *adc, uint32_t bits) {
#if defined(STM32F0)
adc
->
CFGR2
=
1
<<
ADC_CFGR2_CKMODE_Pos
;
// PCLK/2 (synchronous clock mode)
#elif defined(STM32F4) || defined(STM32F7) || defined(STM32L4)
ADC
123
_COMMON
->
CCR
=
0
;
// ADCPR=PCLK/2
ADC
x
_COMMON
->
CCR
=
0
;
// ADCPR=PCLK/2
#elif defined(STM32H7)
ADC12_COMMON
->
CCR
=
3
<<
ADC_CCR_CKMODE_Pos
;
ADC3_COMMON
->
CCR
=
3
<<
ADC_CCR_CKMODE_Pos
;
...
...
@@ -255,12 +261,12 @@ STATIC void adc_config_channel(ADC_TypeDef *adc, uint32_t channel, uint32_t samp
#elif defined(STM32F4) || defined(STM32F7)
if
(
channel
==
ADC_CHANNEL_VREFINT
||
channel
==
ADC_CHANNEL_TEMPSENSOR
)
{
ADC
123_COMMON
->
CCR
=
(
ADC123
_COMMON
->
CCR
&
~
ADC_CCR_VBATE
)
|
ADC_CCR_TSVREFE
;
ADC
x_COMMON
->
CCR
=
(
ADCx
_COMMON
->
CCR
&
~
ADC_CCR_VBATE
)
|
ADC_CCR_TSVREFE
;
if
(
channel
==
ADC_CHANNEL_TEMPSENSOR
)
{
adc_stabilisation_delay_us
(
ADC_TEMPSENSOR_DELAY_US
);
}
}
else
if
(
channel
==
ADC_CHANNEL_VBAT
)
{
ADC
123
_COMMON
->
CCR
|=
ADC_CCR_VBATE
;
ADC
x
_COMMON
->
CCR
|=
ADC_CCR_VBATE
;
}
adc
->
SQR3
=
(
channel
&
0x1f
)
<<
ADC_SQR3_SQ1_Pos
;
// select channel for first conversion
...
...
@@ -280,7 +286,7 @@ STATIC void adc_config_channel(ADC_TypeDef *adc, uint32_t channel, uint32_t samp
adc
->
PCSEL
|=
1
<<
channel
;
ADC_Common_TypeDef
*
adc_common
=
adc
==
ADC3
?
ADC3_COMMON
:
ADC12_COMMON
;
#elif defined(STM32L4)
ADC_Common_TypeDef
*
adc_common
=
ADC
123
_COMMON
;
ADC_Common_TypeDef
*
adc_common
=
ADC
x
_COMMON
;
#elif defined(STM32WB)
ADC_Common_TypeDef
*
adc_common
=
ADC1_COMMON
;
#endif
...
...
@@ -348,16 +354,17 @@ typedef struct _machine_adc_obj_t {
STATIC
void
machine_adc_print
(
const
mp_print_t
*
print
,
mp_obj_t
self_in
,
mp_print_kind_t
kind
)
{
machine_adc_obj_t
*
self
=
MP_OBJ_TO_PTR
(
self_in
);
#if defined(STM32F0) || defined(STM32L0) || defined(STM32WB)
unsigned
adc_id
=
1
;
#else
unsigned
adc_id
=
(
self
->
adc
-
ADC1
)
/
(
ADC2
-
ADC1
)
+
1
;
#if defined(STM32H7)
#if defined(ADC2)
if
(
self
->
adc
==
ADC2
)
{
adc_id
=
2
;
}
#endif
#if defined(ADC3)
if
(
self
->
adc
==
ADC3
)
{
adc_id
=
3
;
}
#endif
#endif
mp_printf
(
print
,
"<ADC%u channel=%u>"
,
adc_id
,
self
->
channel
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录