【iCore1S 双核心板_ARM】例程八:ADC实验——电源监控
实验原理:
STM32内部集成三个12位ADC,iCore1S的所有电源经过
电阻分压或者直接接入STM32的ADC的输出通道内,输入电流
经过高端电流检测芯片ZXCT1009F输入到ADC的输入通道内,
从而实现电源监控功能。
实验现象:
iCore1S双核心板红色LED常亮,串口向终端输出电源监
控的数据。
核心代码:
- 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_USART1_UART_Init();
- /* USER CODE BEGIN 2 */
- LED_RED_ON;
- usart1.printf("\x0c");
- usart1.printf("\033[1;32;40m");
- usart1.printf("\r\n\r\nhello! I am iCore1S!\r\n\r\n\r\n");
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while ()
- {
- /* USER CODE END WHILE */
- for(i = ;i < ;i++);
- //ADC采集
- for(i = ;i < ;i++){
- adc.read(i);
- }
- usart1.printf(" [V] %4.2fV, ",adc.value[] * );
- usart1.printf("[I] %3.0fmA , ",adc.value[] / * .);
- usart1.printf("[1.2V] %4.2fV, ",adc.value[]);
- usart1.printf("[3.3V] %4.2fV, ",adc.value[] * );
- usart1.printf("[2.5V] %4.2fV\r",adc.value[] * );
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
- static int read_adc(int channel)
- {
- int i,k;
- unsigned long int temp[] = {};
- unsigned long int value;
- unsigned short int data[];
- ADC_ChannelConfTypeDef channel_config;
- unsigned char channel_remap[] = {ADC_CHANNEL_4,ADC_CHANNEL_5,ADC_CHANNEL_6,ADC_CHANNEL_7,ADC_CHANNEL_8};
- channel_config.Channel = channel_remap[channel];
- channel_config.Rank = ;
- channel_config.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
- for(k = ;k < ;k++){
- for(i = ;i < ;i++){
- HAL_ADC_ConfigChannel(&hadc3,&channel_config);
- HAL_ADC_Start(&hadc3);
- while(!__HAL_ADC_GET_FLAG(&hadc3,ADC_FLAG_EOC));
- data[i] = HAL_ADC_GetValue(&hadc3);
- }
- sort(data,);
- for(i = ;i < ;i++){
- temp[k] += data[i];
- }
- temp[k] = temp[k] / ;
- }
- value = ;
- for(k = ;k < ;k++){
- value += temp[k];
- }
- value /= ;
- adc.value[channel] = value * ADC_REF / ;
- return value;
- }
源代码下载链接:
链接:http://pan.baidu.com/s/1eRScqK6 密码:0tmn
【iCore1S 双核心板_ARM】例程八:ADC实验——电源监控的更多相关文章
- 【iCore1S 双核心板_ARM】例程五:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程六:WWDG看门狗实验——复位ARM
实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道:设定GPIO为推挽 输出模式,采用灌电流的方式与LED连接,输出高电平LED灭,输出低电平 LED亮,通过通用定时器TIM3实现50 ...
- 【iCore1S 双核心板_ARM】例程十八:SD_IAP_FPGA实验——更新升级FPGA
实验现象及操作说明: 1.烧写程序成功,绿色ARM·LED灯点亮,三色FPGA·LED灯循环点亮,烧写失败,如果挂载SD卡失败,红灯快闪,如果打开文件失败,蓝灯快闪,读取文件指针移动失败,白灯点亮,升 ...
- 【iCore1S 双核心板_ARM】例程九:DAC实验——输出直流电压
实验原理: STM32内部集成12位DAC,可以配置成12位或8位,DAC具有两个独立转换通道, 在双DAC模式下,DA转换可被配置成独立模式或工作模式,iCore1S中DAC参考电压为 2.5V.本 ...
- 【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输
实验方法: 1.USB_HID协议免驱动,此例程不需要驱. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore1S USB-OTG接口与电脑相连. 3.打开上位机软件usb_hid ...
- 【iCore1S 双核心板_ARM】例程二十:UART_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...
- 【iCore1S 双核心板_ARM】例程十一:RTC实时时钟实验——显示时间和日期
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ RTC_DateTypeDef sDate; RTC_TimeTypeDef sTime; u ...
- 【iCore1S 双核心板_ARM】例程十三:SDIO实验——读取SD卡信息
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ HAL_SD_TransferStateTypedef State; /* USER CODE ...
随机推荐
- SpringMVC框架09——@ResponseBody的用法详解
@ResponseBody可以标注在方法上也可以标注在类上面.简单来说,当标注在方法上时,该方法的返回结果直接转成JSON格式:当标注在类上时,该类中的所有方法的返回结果都转换成JSON格式. 代码示 ...
- asp.net core模块学习
一.配置管理 二.管道 三.认证与授权 四.MVCDemo 五.IdentityServer4 一.配置管理 1,读取内存配置 using System; using Microsoft.Extens ...
- prufer序列计数的一些结论
\(prufer\)序列和完全图的生成树一一对应(考虑构造) 完全图的生成树个数为\(n^{n - 2}\) 满足第\(i\)个点的度数为\(d_i\)的生成树为\(\frac{n!}{\prod ( ...
- 卡特兰数 Catalan 笔记
一.公式 卡特兰数一般公式 令h(0)=1,h(1)=1,catalan数满足递推式.h(n) = h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>= ...
- Java并发程序设计(十一)设计模式与并发之生产者-消费者模式
设计模式与并发之生产者-消费者模式 生产者-消费者模式是一个经典的多线程设计模式.它为多线程间的协作提供了良好的解决方案.在生产者-消费者模式中,通常由两类线程,即若干个生产者线程和若干个消费者线程. ...
- while 、函数、参数
while 循环 一个循环语句 表示当某个条件成立时就循环 不知道具体循环次数,但能确定循环的成立条件的时候用while循环 while 条件表达式: 语句块 例1 :如果年利率为6.7%,本利是每年 ...
- nginx编译安装on mac
一.编译安装模块 如果是原有包中就有的模块,编译时, ./configure --with-xxx 就可以, 如果是第三方模块,可使用 --add-module, 如果有多个模块的话,只需要多次使用- ...
- POI HSSFCellStyle 设置 Excel 单元格样式
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...
- phpmyadmin更改密码
- CSS3 Flex布局整理(三)-项目属性
一.Flex布局中 Flex Item属性控制,可以指定显示顺序.剩余空间的放大,缩小.交叉轴的排列 1.order:定义项目的排列顺序,数值越小,排列越靠前,默认为0.类似z-index 2.fle ...