STM8获取电压值
(1)端口定义
static void ADC_POWER_Config()
{
/* Init GPIO for ADC1 */
GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);//可变电阻
ADC1_DeInit();
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_2, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL0, ENABLE);
ADC1_Cmd(ENABLE);
}
(2)获取电压值(这里采集五次取平均值)
#define BATTERY_CHECK_COUNT_PER_COLLECT 5 //每次采集的次数
u16 Get_ADC_POWER_Value(void)
{
u16 nBattery_Check_Value = 0;
u16 nNum = 0;
for(nNum = 0; nNum < BATTERY_CHECK_COUNT_PER_COLLECT; nNum++)//采集BATTERY_CHECK_COUNT_PER_COLLECT次,累加采集的电量值
{
ADC1_StartConversion();//开始转换
nBattery_Check_Value += ADC1_GetConversionValue(); //累加读取adc的转换值
}
nBattery_Check_Value = nBattery_Check_Value/(BATTERY_CHECK_COUNT_PER_COLLECT*10);//求出电量平均值
return nBattery_Check_Value;
}
(3)main函数
void main(void)
{
ADC_POWER_Config();
u16 nBattery_Check_Value2 = 0;
nBattery_Check_Value2 = Get_ADC_POWER_Value(); //读取电量
printf("nBattery_Check_Value2 = %d\n",nBattery_Check_Value2);
}
关键字:STM8 获取电压值
引用地址:
STM8获取电压值
推荐阅读最新更新时间:2024-03-16 16:23
STM8在IAR中Option Byte配置
近期帮客户调试STM8的程序使用到OptionByte配置,在网上查询几乎都是介绍如何通过函数实现;后查看IAR帮助文档找到了IAR配置OptionByte的方法。具体方法如下: 1、在工程Options...选项Debugger中选择你的调试工具,选择好后会在IAR的菜单栏中出现对应的调试工具菜单。如下图所示,我这里选择的是ST_LINK。 2、选择上图所示ST_LINK菜单中的Option Bytes选项,进入下图所示的设置界面。 3、通过右键修改需设置的选项,保存并记住保存的路径。 4、如下图所示再次打开工程Options...对话框,选择你是用的调试工具选项。我使用的的是ST-LINK。勾选Use option b
[单片机]
STM8 单线半双工通信
UART可以配置成遵循单线半双工协议。单线半双工模式通过设置UART_CR5寄存器的HDSEL位实现。在该模式下,下面的位必须保持清零状态: UART_CR3寄存器的LINEN和CLKEN位 UART_CR5寄存器的SCEN和IREN位 注意:该功能只适用于STM8的UART1。 当HDSEL写'1'时 UART_RX不再被使用 。 当没有数据传输时,UART_TX处于释放状态。因此,它在空闲状态的或接收状态时表现为一个标准I/O口。这就意味该I/O在不被UART驱动时,必须配置成悬空输入(或开漏的输出高)。 除此以外,通信与正常UART模式类似。要注意的是必须由软件来管理线上的冲突(例如通过使用一
[单片机]
STM8单片机ADC带缓存的连续采样模式
在上一篇文章中说了STM8的ADC连续采样模式,为了提高采样的精度和速率,STM8单片机还提供了带缓存的连续采样模式,也就是说ADC会连续采集8个数据,放在缓存中,读取数据时可以一次从缓存中读取8个数据,这样就可以通过8个数据数据计算平均值,使得采样的结果更加准确。 下面看一下官方文档中的对缓存模式的介绍。 通过文档中可以看出,要开启缓存模式,只需要将ADC_CR3寄存器中的COUNT为DBUF设置为1,就可以开启缓存模式了。 当开启缓存模式后,采样的结果将不会存放在ADC_DR寄存器中,而是会将结果依次存放在ADC_DB0R寄存器到ADCDB7R寄存器,连续读取8次数据,存储在这8个寄存器中。读取数据的时候,依次从这
[单片机]
基于STM8的IAR 配置实现
以STM8为例: 将项目使用的MCU型号的icf文件拷贝到项目里面,icf一般放在 C:Program FilesIAR SystemsEmbedded Workbench 6.5stm8config 这个目录下。 1、拷贝lnkstm8s207rb.icf 例如,我用的是STM8S207RB,则我会将lnkstm8s207rb.icf这个文件拷贝到我项目里面。 2、设置项目属性 打开项目的OpTIon属性,然后修改linker--》Linker configuraTIon file这项里面的内容为: $PROJ_DIR$lnkstm8s207rb.icf 如图, 点确
[单片机]
STM8 汇编学习笔记2: 开发环境
写在前面 就我所知,STM8的开发平台有两种:意法官方的STVD和IAR for STM8. STVD没尝试过。反正IAR用的感觉还凑合,各种该有的功能都有,但界面不怎么友好。估计是低版本的缘故,由于我长时间盯着屏幕眼睛酸痛,所以没办法只能把编辑界面底色改成黑色,可TM怎么行号编程白色的了?根本看不清。看不清就不看了呗,反正也没啥用。但是就是感觉超不爽。而且字体显示不知道怎么搞的,在缩放的时候就变得特别奇怪,跟手写的一样。 相关资料 如之前所述,官方的永远是最好的,没有谁比创造者更了解他的产品了。 环境设置 俗话说,站在巨人的肩膀上能看得更远。学习汇编也是一样,先看代码。但是由于汇编对于不同的芯片差异很大,网络上也很难找到
[单片机]
STM8中断向量表
// Copyright (c) 2009, Wolver Wang, Innov Inc. R&D Center // wolver@21com.com // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above cop
[单片机]
关于STM8的AFR0和AFR1使用
芯片手册中写AFR0和AFR1不能同时使用 AFR1 Alternate function remapping option 1 (2) 0: AFR1 remapping option inactive: default alternate function(1); 1: Port A3 alternate function = SPI_NSS; port D2 alternate function =TIM2_CH3. AFR0 Alternate function remapping option 0(2) 0: AFR0 remapping option inactive: Default alternate func
[单片机]
基于IAR的STM8工程的创建
最近工作闲下来了,趁有时间,琢磨了一下STM8芯片。先看图片,在网上买了一块STM8的核心板,手上正好有一个St-Link仿真器,赶紧把环境搭起来了。自己的笔记本太老了,只有两个USB口,还扩展了一个USB HUB。 硬件环境 今天专门查了一下JTAG、JLink、ULINK、ST-LINK,区别如下: (1)JTAG是一种国际标准测试协议,主要用于芯片内部的测试,如ARM,DSP等; (2)JLink同样遵循JTAG协议,是JTAG加上一个USB转接器; (3)ULINK是Keil/ARM公司自己生产的,用于ARM系列新品测试,仅支持Keil环境; (4)ST-LINK是针对STM32和STM8系列洗牌芯片的仿真器。 STM8
[单片机]