实验原理:
STM32内部集成三个12位ADC,iCore1S的所有电源经过电阻分压或者直接
接入STM32的ADC的输出通道内,输入电流经过高端电流检测芯片ZXCT1009F
输入到ADC的输入通道内,从而实现电源监控功能。
核心代码:
int main(void){ /* USER CODE BEGIN 1 */ int i; /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC3_Init(); MX_USART6_UART_Init(); /* USER CODE BEGIN 2 */ usart6.initialize(115200); LED_GREEN_ON; usart6.printf("\x0c"); usart6.printf("\033[1;32;40m"); usart6.printf(" Hello, I am iCore4!\r\n"); /* USER CODE END 2 */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ LED_GREEN_ON; HAL_Delay(500); LED_GREEN_OFF; for(i = 0;i < 5;i ++){ my_adc.read(i); } usart6.printf(" "); usart6.printf("[I] %3.0fmA , ",my_adc.value[0] / 2* 1000.); usart6.printf("[V] %4.2fV, ",my_adc.value[1] * 6.); usart6.printf("[3.3V] %4.2fV, ",my_adc.value[2] * 2.); usart6.printf("[2.5V] %4.2fV,",my_adc.value[3] * 2.); usart6.printf("[1.2V] %4.2fV\r",my_adc.value[4]); } /* USER CODE END 3 */}
源代码下载链接:
链接: 密码:1x87
iCore4链接: