热度 3
2024-1-13 13:33
294 次阅读|
0 个评论
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;`:返回初始化失败的状态。