实验原理:

  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实验——电源监控的更多相关文章

  1. 【iCore1S 双核心板_ARM】例程五:IWDG看门狗实验——复位ARM

    实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...

  2. 【iCore1S 双核心板_ARM】例程六:WWDG看门狗实验——复位ARM

    实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...

  3. 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED

    实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道:设定GPIO为推挽 输出模式,采用灌电流的方式与LED连接,输出高电平LED灭,输出低电平 LED亮,通过通用定时器TIM3实现50 ...

  4. 【iCore1S 双核心板_ARM】例程十八:SD_IAP_FPGA实验——更新升级FPGA

    实验现象及操作说明: 1.烧写程序成功,绿色ARM·LED灯点亮,三色FPGA·LED灯循环点亮,烧写失败,如果挂载SD卡失败,红灯快闪,如果打开文件失败,蓝灯快闪,读取文件指针移动失败,白灯点亮,升 ...

  5. 【iCore1S 双核心板_ARM】例程九:DAC实验——输出直流电压

    实验原理: STM32内部集成12位DAC,可以配置成12位或8位,DAC具有两个独立转换通道, 在双DAC模式下,DA转换可被配置成独立模式或工作模式,iCore1S中DAC参考电压为 2.5V.本 ...

  6. 【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输

    实验方法: 1.USB_HID协议免驱动,此例程不需要驱. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore1S USB-OTG接口与电脑相连. 3.打开上位机软件usb_hid ...

  7. 【iCore1S 双核心板_ARM】例程二十:UART_IAP_ARM实验——更新升级STM32

    实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...

  8. 【iCore1S 双核心板_ARM】例程十一:RTC实时时钟实验——显示时间和日期

    实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ RTC_DateTypeDef sDate; RTC_TimeTypeDef sTime; u ...

  9. 【iCore1S 双核心板_ARM】例程十三:SDIO实验——读取SD卡信息

    实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ HAL_SD_TransferStateTypedef State; /* USER CODE ...

随机推荐

  1. 爬取w3c课程—Urllib库使用

    爬虫原理 浏览器获取网页内容的步骤:浏览器提交请求.下载网页代码.解析成页面,爬虫要做的就是: 模拟浏览器发送请求:通过HTTP库向目标站点发起请求Request,请求可以包含额外的header等信息 ...

  2. BufferedReader的小例子

    注意: BufferedReader只能接受字符流的缓冲区,因为每一个中文需要占据两个字节,所以需要将System.in这个字节输入流变为字符输入流,采用: BufferedReader buf = ...

  3. struts1 标签引入

    1 tld文件导入 目录结构如下 2 jsp 文件头部标签引入 <%@ page pageEncoding="gbk" contentType="text/html ...

  4. linux golang开发环境配置(离线方式)

    <获取开发工具>     到https://www.golangtc.com/download 下载安装包, 根据自己的系统选择合适的开发包,这里选择go.1.9.2.linux-amd6 ...

  5. android sdk 汉化

    作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com === ===== ==== ==== == ...

  6. AGC 001E.BBQ Hard(组合 DP)

    题目链接 \(Description\) 给定长为\(n\)的两个数组\(a,b\),求\[\sum_{i=1}^n\sum_{j=i+1}^n\binom{a_i+a_j+b_i+b_j}{a_i+ ...

  7. [BZOJ2650]积木

    [BZOJ2650]积木 题目大意: 有一排\(n\)个积木,第\(i\)个积木的高度为\(h_i\),定义混乱值为相邻两个积木高度之差的绝对值之和乘上系数\(c\).可以花费\(t^2\)的代价将一 ...

  8. CocosCreator 场景转换API

    一.CocosCreator场景的切换API: cc.director.loadScene( ‘场景名称’);//场景切换必须使用的API 通过场景名称进行加载场景时,常用的就是上边的API,但是版本 ...

  9. SQL数据库连接到服务器出错——无法连接到XXX

    问题:Windows或者SQL Server身份验证下,出现连接到服务器出错 解决方式: 1.检查实例名称是否正确,如下 根据自己电脑的实际名称修改修改如下: 1)Microsoft SQL Serv ...

  10. hadoop三种运行模式

    1.单机模式:安装简单,几乎不用做任何配置,但仅限于调试用途 2.伪分布模式:在单节点上同时启动namenode.datanode.jobtracker.tasktracker.secondaryna ...