原创 逐行注释,懂得都懂,4分频,HPM5300

2024-1-13 13:33 310 3 3 分类: 物联网 文集: 学习分享
1. `hpm_stat_t init_common_config(adc16_conversion_mode_t conv_mode){`:定义一个名为`init_common_config`的函数,接收一个`adc16_conversion_mode_t`类型的参数`conv_mode`,返回类型为`hpm_stat_t`。
2. `adc16_config_t cfg;`:声明一个名为`cfg`的`adc16_config_t`类型变量。
3. `/* initialize an ADC instance */`:注释说明正在初始化一个ADC实例。
4. `adc16_get_default_config(&cfg);`:调用`adc16_get_default_config`函数获取默认配置,并将结果存储在`cfg`变量中。
5. `cfg.res            = adc16_res_16_bits;`:设置`cfg`变量的分辨率为16位。
6. `cfg.conv_mode      = conv_mode;`:设置`cfg`变量的转换模式为传入的`conv_mode`参数。
7. `cfg.adc_clk_div    = adc16_clock_divider_4;`:设置`cfg`变量的ADC时钟分频器为4。
8. `cfg.sel_sync_ahb   = (clk_adc_src_ahb0 == clock_get_source(BOARD_APP_ADC16_CLK_NAME)) ? true : false;`:判断`clk_adc_src_ahb0`是否等于`BOARD_APP_ADC16_CLK_NAME`,如果相等则将`cfg.sel_sync_ahb`设置为`true`,否则设置为`false`。
9. `if (cfg.conv_mode == adc16_conv_mode_sequence || cfg.conv_mode == adc16_conv_mode_preemption) { cfg.adc_ahb_en = true; }`:判断`cfg.conv_mode`是否等于`adc16_conv_mode_sequence`或`adc16_conv_mode_preemption`,如果满足条件则将`cfg.adc_ahb_en`设置为`true`。
10. `/* adc16 initialization */`:注释说明正在进行ADC初始化。
11. `if (adc16_init(BOARD_APP_ADC16_BASE, &cfg) == status_success) {`:调用`adc16_init`函数进行ADC初始化,传入`BOARD_APP_ADC16_BASE`和`&cfg`作为参数。如果初始化成功,执行下一行代码。
12. `/* enable irq */`:注释说明正在启用中断。
13. `intc_m_enable_irq_with_priority(BOARD_APP_ADC16_IRQn, 1);`:调用`intc_m_enable_irq_with_priority`函数启用中断,传入`BOARD_APP_ADC16_IRQn`和优先级1作为参数。
14. `return status_success;`:返回初始化成功的状态。
15. `} else {`:如果初始化失败,执行下一行代码。
16. `printf("%s initialization failed!\n", BOARD_APP_ADC16_NAME);`:打印错误信息,提示ADC初始化失败。
17. `return status_fail;`:返回初始化失败的状态。

作者: 丙丁先生, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3996156.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条