0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm8s003 adc 例程

分享:

以下是针对STM8S003微控制器的ADC(模数转换器)单次转换例程的中文详解,采用STM8标准外设库(SPL)开发:


硬件配置

  • ADC通道:AIN3 (对应引脚PD2)
  • 参考电压:VDD(默认电源电压,通常3.3V)
  • 分辨率:10位(值范围0-1023)

代码实现

#include "stm8s.h"

void ADC_Init(void) {
  // 1. 开启ADC外设时钟
  CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, ENABLE);

  // 2. 初始化ADC参数
  ADC_Init(ADC1, 
           ADC_CONVERSIONMODE_SINGLE, // 单次转换模式
           ADC_RESOLUTION_10BIT,      // 10位分辨率
           ADC_PRESCALER_2);          // 预分频=fMASTER/2

  // 3. 配置ADC通道(AIN3)
  ADC_ChannelCmd(ADC1, ADC_CHANNEL_3, ENABLE);

  // 4. 使能ADC
  ADC_Cmd(ADC1, ENABLE);

  // 5. 校准ADC(关键!)
  ADC_StartCalibration(ADC1);
  while(ADC_GetCalibrationStatus(ADC1) != RESET); // 等待校准完成
}

uint16_t ADC_Read(void) {
  // 1. 启动转换
  ADC_StartConversion(ADC1);

  // 2. 等待转换完成
  while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

  // 3. 清除标志位并读取结果
  ADC_ClearFlag(ADC1, ADC_FLAG_EOC);
  return ADC_GetConversionValue(ADC1);
}

void main(void) {
  uint16_t adc_value = 0;

  // 初始化ADC
  ADC_Init();

  while(1) {
    adc_value = ADC_Read();  // 读取ADC值

    // 此处可添加数据处理或输出(如串口打印)
    // 电压计算:voltage = (adc_value * VDD) / 1024

    delay_ms(100);  // 添加延时(需自行实现)
  }
}

关键步骤说明

  1. 时钟使能
    必须启用ADC模块时钟:CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, ENABLE)

  2. ADC校准
    每次上电后必须执行校准,否则读数可能错误。

  3. 引脚配置
    确保PD2引脚设为模拟输入(默认状态无需额外配置,避免设为输出)。

  4. 读取流程

    • 启动转换 ADC_StartConversion()
    • 轮询EOC标志位(或使用中断)
    • 读取结果并清除标志

常见问题解决

  1. 读数跳动大

    • 增加100nF去耦电容到VDD
    • 避免高阻抗信号源(可加0.1uF电容滤波)
    • 多次采样取平均值
  2. 校准失败
    确保在ADC使能后立即校准,且校准期间无转换操作。

  3. 通道选择错误
    STM8S003有效通道:AIN2(PD1) ~ AIN6(PD5)


电压换算公式

float voltage = (adc_value * 3.3f) / 1024.0f; // 假设VDD=3.3V

注意:本例使用STM8S标准外设库(SPL)。若使用寄存器直接操作或HAL库,核心逻辑类似,需关注相应寄存器配置。

STM8S003

STM8S003编程和下载程序用啥软件?

CYY8530 2020-06-02 12:19:43

芯圣电子兼容STM8S003的王牌选手-HC89S003A系列

HC89S003A系列是芯圣电子在2021年推出的HC89S003系列的全新升级版。不仅性能上超越前代,在兼容STM8S003系列这方面表现更为优异!覆盖了STM8S003的所有管脚功能,电源管脚

2022-09-15 15:27:56

stm8s003能模拟usb键盘吗?

stm8s003能模拟usb键盘吗,串口输入数据,usb数据给电脑,可以用usb1.1低速的,最好有例程

早知 2023-11-09 07:28:28

stm8f103和stm8s003有何不同

1.先上脚位图,不要问我为什么是stm8f103,stm8f103和stm8s003只有内存的不同。2.上代码,选用PC4(AIN2)为ADC转换引脚,只提供函数,自己选择调用,不追求精度的话可以

微风挽雨 2021-12-10 06:52:06

STM8S003单片机ADC采样通道有几个呢

STM8S003单片机ADC采样通道总共有5个,从AIN2---AIN6,多通道采样时需要将ADC转换设置为单次转换模式,每次切换采样通道后,需要重新初始化 ADC,采样结果在中断中读取。IO口

jerry181855 2022-02-21 07:04:42

STM8S003的flash可擦写次数是多少?

STM8S003的flash可擦写次数是多少

zhouxk 2023-10-10 07:28:12

STM8S003移植N76E003功耗增加了一倍怎么解决?

STM8S003移植N76E003,功耗增加了一倍,除了降主频外,还有其它降功耗的办法吗,用到三路ADc,两时钟,一串口

吴与伦比 2023-09-01 07:22:16

stm8s003和n76e003写了底层驱动

前段时间做了个88颗灯珠的原形灯板,分别用stm8s003和n76e003写了底层驱动,根据手册要求代码如下:STM8S003#include "fy_ws2812b.h"/*此

overheat 2021-11-23 08:09:58

STM8S003和STM8S103两个主控有什么区别?

STM8S003和STM8S103两个主控有什么区别

洒下墨色 2023-10-11 08:32:07

STM8S003单片机的ADC怎样才能实现连续转换呢

STM8S003单片机内部ADC为12位,A/D转换的各个通道可以执行单次和连续的转换模式。 单次转换模式的意思就是,ADC每次转换一次数据后,就会停止转换,如果还需要继续转换的话,就需要手动开启

gvjhvbc 2022-02-21 06:38:50

怎样去读取STM8S003单片机各个通道的ADC采样值呢

ADC多通道采样时遇到了一个问题,费了半天劲才找到原因。在此将分析过程记录下来。这是STM8S003单片机5个通道ADC采样程序,在主函数中依次读取各个通道的ADC采样值。首先单独测试一下每个通道

shbaoyan 2022-02-21 07:35:50

怎样使用STM8S003的PWM功能输出PWM波呢

怎么去修改stm8s系列单片机的头文件呢?怎样使用STM8S003的PWM功能输出PWM波呢?

北冥有熊 2022-02-17 07:20:59

STM8S003程序偶尔会不见是为什么?

我目前使用STM8S003 並且有使用到option byte 在正常使用的過程中,有時候程式就突然不見了, 不知道各位有沒有過沒這樣的問題? 然後重新燒錄的時候會失敗並且出現下面的訊息

马汉三呐 2023-10-20 08:19:48

STM8S003中的快速中断

嗨,对于我的项目,我使用外部端口中断。当它到来时,我必须进行ADC转换。中断来自每5 us ....每隔5us中断后可以进行ADC转换吗?我正在使用STM8S003K3 MCU的发现套件进行测试 米

60user77 2019-05-28 15:26:51

stm8单片机例程分享

使用stm8单片机模拟串口功能实现STM8S003单片机串口实现printf函数功能STM8单片机输出SPWM波STM8单片机PWM单脉冲模式STM8S003单片机定时器4TIM4功能实现STM8S003单片机定时器2TIM2功能实现STM8S003单片机定时器1TIM1功

挽你何用 2022-01-27 07:37:24

STM8S003单片机UID读取的方法有几种

最近做项目时需要用到单片机的序列号,于是查了一下STM8S003单片机UID读取的方法。读取UID方法大概分两种,一种是直接在地址中读取,一种是通过定义一个联合体,将联合体的起始地址设置在UID起始

乔伊斯e 2022-02-21 06:15:02

分享 STM8S003开发板工程文件原理图

`由于用户的开发需求,接触到STM8S系列的单片机,起初并不看好,但是它的价格很亲民,STM8S003淘宝价格普遍在0.9-1.5之间不等,正常在1.05就能买到,很便宜。对于产品要求不高的场合可以

猛男217 2019-09-28 18:46:01

EN8F5113完全兼容替代意法半导体STM8S003单片机

还有没有国产替代厂商能完美兼容替代ST单片机STM8S003、华大HC32F003和新唐N76E003芯片的呢?下面英锐恩的小编为大家介绍一款完美兼容替代上述型号的芯片:恩智微低功耗增强型8051

2022-10-18 15:50:57

STM8S003F3如何使用ADC

STM8S003F3如何使用ADC

prism 2022-02-11 08:08:04

如何控制stm8s003核心板进行简单的IO输入输出/中断/窗口看门狗/全休眠功能?

如何控制stm8s003核心板进行简单的IO输入输出/中断/窗口看门狗/全休眠功能?

snandi 2022-02-21 06:02:44

STM8S003单片机系统开发平台的搭建

一、硬件开发环境的搭建图示电路板上所用单片机即为STM8S003,仿真器(或者叫下载器、调试工具)为ST-Link V2,再加一台电脑。在电脑上首次插上ST-Link V2需要安装驱动软件,驱动软件

一只耳朵怪 2020-11-26 16:54:03

HC89S003多路ADC采样代码分享

,stm8s003f4p6只有5x10位ADC,但是hc89s003有(11+2)x12位ADC 、(12路外部+2路内部),一片更比两片强。而且stm8一片是1块多,hc89s003是不到一块(虽然邮费20是真的贵 )...

1123127317 2021-12-07 11:55:21

STM8S003单片机最小系统的电路原理图

本文以ST公司的STM8S003单片机为例,给大家讲解一个单片机最小系统的电路原理图:通过单片机采集一个按键信号,点亮一颗LED灯。如果你看懂了这张原理图,单片机硬件就入门了——真的到进门了!一

一只耳朵怪 2020-11-26 16:45:20

STM8S_003_ TIM定时中断

STM8S_003_TIM定时中断

2020-03-20 10:46:06

使用N76E003单片机开发的项目

1、项目说明这是本人使用新唐N76E003单片机开发的第一个项目,通过博客来记录开发的过程,以便以后可以参考,同时也留点回忆。此次的项目使用的N76E003是能够与STM8S003进行引脚兼容,而且

硕达科讯 2021-11-22 07:14:56

STM8单片机串口发送引脚和接收引脚的相关资料推荐

在使用STM8S003单片机时,需要用到ADC采样功能,STM8S003总共有5个ADC采样口,但是其中两个采样口是和串口复用的,如果当ADC口用,就不能用串口,如果当串口用,就不能用ADC口。通过

caosurround 2022-01-27 08:04:57

STM8S003F3U编程

我对STM8微控制器系列完全陌生。我打算使用STM8S003F3U控制器进行一个项目,其中将使用ADC和定时器模块。   如果我能找到ADC,定时器等的一些示例代码,将会很有用。有可用的示例代码

houjunhao33 2019-07-05 14:28:09

如何用stm8s003让nrf24l01发送数据?

大家好,请问一下用stm8s003让nrf24l01发送数据,让stm32接收数据。程序如下const u8 TX_ADDRESS[TX_ADR_WIDTH]= {0x34

青上也 2020-07-22 04:11:56

N76E003如何降低功耗?

STM8S003移植N76E003,功耗增加了一倍,除了降主频外,还有其它降功耗的办法吗?

小野七七 2023-06-27 09:58:25

加载更多
相关标签