COMP VBAT
COMP VBAT的示例工程实现了电池电压与MSIO引脚外接电压值的比较。
COMP VBAT示例的源代码和工程文件位于SDK_Folder\projects\peripheral\comp\comp_msio_vbat,其中工程文件在文件夹Keil_5下。
代码理解
示例工程流程图如图 44所示:
- 配置COMP模块。
g_comp_handle.init.input_source = COMP_INPUT_SRC_IO0; g_comp_handle.init.ref_source = COMP_REF_SRC_VBAT; g_comp_handle.init.ref_value = 5; // Reference = ((ref_value + 1) / 10) * VBATT hal_comp_deinit(&g_comp_handle); hal_comp_init(&g_comp_handle); msio_config.pin = COMP_INPUT_PIN; msio_config.direction = MSIO_DIRECTION_INPUT; msio_config.pull = MSIO_PULLUP; msio_config.mode = MSIO_MODE_ANALOG; hal_msio_init(&msio_config); hal_timer_base_init(&g_tim1_handle);- input_source,ref_source:请参考 COMP MSIO > 代码理解 章节。
- ref_value:比较器参考电压,此示例中取值范围在0 ~ 7。值为0时,不符合比较器使用规范。
- 配置COMP_INPUT_PIN(MSIO 0)为模拟输入引脚。
- 调用hal_comp_start()启用中断方式比较器,比较结果通过回调函数hal_comp_trigger_callback()返回,用户可在此函数自定义操作。代码如下:
void hal_comp_trigger_callback(comp_handle_t *p_comp) { printf("Comp is triggered.\r\n"); } hal_comp_start(&g_comp_handle);
测试验证
- 用GProgrammer下载comp_msio_vbat.bin至开发板。
- 将开发板串口连接至PC端,打开并配置GRUart。
- 在GRUart的Receive Data窗口中将会显示比较器的比较结果。