實驗原理:
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 */ }
原始碼下載連結:
連結:http://pan.baidu.com/s/1co5BdG 密碼:1x87
iCore4連結: