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

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

3天内不再提示

stm8s003f3 adc 转换程序

分享:

以下是针对STM8S003F3微控制器的ADC转换程序(中文说明),包含初始化和单次转换流程:

1. ADC初始化代码

#include "stm8s.h"

void ADC_Init(void) {
  // 1. 开启ADC电源(第一次设置ADON唤醒ADC)
  ADC1->CR1 |= ADC1_CR1_ADON;

  // 2. 延时确保电源稳定(>7μs)
  for(uint16_t i = 0; i < 1000; i++); // 简单延时

  // 3. 校准ADC(仅需一次)
  ADC1->CR2 |= ADC1_CR2_CAL;
  while(ADC1->CR2 & ADC1_CR2_CAL); // 等待校准完成

  // 4. 配置参数
  ADC1->CR1 = (ADC1->CR1 & ~ADC1_CR1_SPSEL) | 0x20; // 预分频=8(fMASTER=16MHz时ADC时钟=2MHz)
  ADC1->CR2 &= ~ADC1_CR2_ALIGN; // 右对齐结果
  ADC1->CSR &= ~ADC1_CSR_CONT;  // 单次转换模式
}

2. ADC单次转换函数

uint16_t ADC_ReadSingleChannel(uint8_t channel) {
  // 1. 选择通道(AIN2-AIN6对应通道号2-6)
  ADC1->CSR = (ADC1->CSR & 0xF0) | (channel & 0x0F);

  // 2. 唤醒ADC并启动转换(连续写两次ADON)
  ADC1->CR1 |= ADC1_CR1_ADON; // 第一次唤醒
  ADC1->CR1 |= ADC1_CR1_ADON; // 第二次启动转换

  // 3. 等待转换完成
  while(!(ADC1->CSR & ADC1_CSR_EOC));

  // 4. 清除标志位
  ADC1->CSR &= ~ADC1_CSR_EOC;

  // 5. 读取结果(10位右对齐)
  return ((uint16_t)ADC1->DRH << 8) | ADC1->DRL;
}

3. 使用示例(读取AIN3通道电压)

int main() {
  CLK->CKDIVR = 0x00; // 设置HSI 16MHz
  ADC_Init();         // 初始化ADC

  while(1) {
    uint16_t adcValue = ADC_ReadSingleChannel(3); // 读取AIN3
    float voltage = adcValue * 3.3 / 1023;       // 计算电压(VREF=3.3V)

    // 此处添加处理代码(如发送到串口/控制LED等)
    delay_ms(100); // 延时防止频繁读取
  }
}

关键配置说明:

  1. 通道选择

    • AIN2 → 通道2
    • AIN3 → 通道3
    • AIN4 → 通道4
    • AIN5 → 通道5
    • AIN6 → 通道6
  2. 时钟配置

    • 确保主时钟使能(默认使用内部16MHz HSI)
    • ADC时钟需≤4MHz,示例使用8分频(2MHz)
  3. 转换时间

    • 采样时间固定(默认约3.5μs)
    • 总转换时间 ≈ (采样时间 + 10.5周期) / fADC
  4. 电压计算

    • VREF默认使用VDD(需保持稳定)
    • 转换公式:电压 = (ADC值 × VDD) / 1023

注意:实际使用需根据硬件连接:

  1. 参考电压VREF默认与VDD相连
  2. 输入通道需配置为浮空输入(不使用上拉)
  3. 模拟输入电压范围:0V ~ VDD

完整工程需包含STM8标准外设库(可通过STVD或IAR编译)。

STM8S003F3如何使用ADC

STM8S003F3如何使用ADC

prism 2022-02-11 08:08:04

STM8S003F3最小系统原理

STM8S003F3是一款适用于汽车和工业应用的8位微控制器。它具备高性能、低功耗和低成本的特点,广泛应用于各种控制系统中。本文旨在介绍STM8S003F3的最小系统原理,让大家对该微控制器

2023-12-27 10:44:04

基于STM8S003F3碰撞检测功能

基于STM8S003F3的碰撞检测功能

wdc596933938 2023-09-25 06:56:39

替代STM8S003F3的国产华大HC32F003资源对比

华大单片机(HDSC)HC32F003STM8S003F3单片机封装管脚兼容,可以对STM8S003F3进行替换,近期由于全球疫情的影响,意法的产能极不稳定,而且供求关系必然导致成本的提高。优势

jetson024 2020-03-25 14:17:07

STM8S003F3U编程

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

houjunhao33 2019-07-05 14:28:09

我使用STVD中的代码在stm8s003f3上运行adc哪里出错了?

stm8s003f3上运行adc,并使用UART将结果发送到pc。 anybode可以告诉我我做错了什么吗? adc_value是ADXL335的1010。 arduino上的相同设置提供了大约350左右的读数。 任何

ncaskd 2019-06-26 15:55:53

STM8S003F3内部晶振初始化代码

STM8S003F3 内部晶振初始化代码如下:CLK_DeInit();CLK_LSICmd(ENABLE);CLK_HSICmd(ENABLE);while(SET

lq544 2021-08-12 07:50:16

基于stm8s003F3单片机定时器中断的方式解码

一次的定时器,直接放中断服务函数就可以,适用于所有单片机。2.本段代码基于stm8s003F3单片机。3.不同单片机的配置输入模式不一样,自行修改。4.2262解码也是一样的道理,稍微改改即可。******************************************************.

elecfans 2022-01-06 07:20:47

如何从scartch编程stm8s003f3p6?

stm8s003f3p6设备的方式,或者可以指向我一个有用的教程。那对你很好。谢谢你 #stm8s003f3 #stvd# - #iar-workbenc以上来自于谷歌翻译以下为原文 i am

分会看见我呢看 2019-07-03 10:14:13

STM8S003F3低功耗问题

|有没有大佬使用过STM8S003F3P6芯片,请问如何通过编程进入低功耗模式呢?(等待模式、活跃停机、停机),有完整的源码工程最好,谢谢

SuperInvictus 2022-09-26 11:31:33

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

地址处,在初始化的时候直接将UID号存入联合体中。关于UID的描述,官方资料如下:STM8S003F3芯片Unique ID的首地址为0X4865,连续读取后十二字节数据即为STM8S003F3芯...

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

stm8f103和stm8s003有何不同

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

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

STM8S003F3P6的相关资料分享

意法半导体STM8S003F3P6超值系列8位微控制器提供8KB的闪存程序存储器,以及集成的真数据EEPROM。STM8S003F3P6超值系列器件具有以下优势:性能、稳健性和降低系统成本。支持高达

jefljel 2021-12-08 07:38:33

HC89S003多路ADC采样代码分享

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

1123127317 2021-12-07 11:55:21

STM8S003F3P6TR

2024-04-30 10:48:23

如何使用STM8S003K3

STM8S脱坑指南你好!这是你第一次使用 STM8S003K3 。如果你想学习如何使用STM8S003K3, 可以速速滚蛋,因为这一点也不好玩。理由如下:1.参考资料少2.官方资源少且混乱3.过于

我不吃鱼 2022-01-27 07:05:02

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

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

gvjhvbc 2022-02-21 06:38:50

STM8S003使用STLINK_V2实现批量烧录

可以看到具体的烧录命令;其中STVP_CmdLine.exe -BoardName=ST-LINK -Port=USB -ProgMode=SWIM -Device=STM8S003F3

suixindianzi 2021-07-28 09:45:29

STM8L051F3ADC相关知识

ADC(Analog-to-Digital Converter):模拟-数字转换,就是把模拟信号转换为数字信号。STM8L051F3ADC可以执行在单次或连续模式

2023-02-14 09:38:22

ST系列STM8S003F3P6单片机芯片介绍

就STM8S系列MCU中的STM8S003F3P6给大家详细介绍下。STM8S003F3P6是一款高性价比8位微控制器, 提供8kb闪存程序存储器, 以及集成真实数据EEPROM. 高性价比设备提供以下

小翁嗡嗡嗡 2020-06-20 11:00:52

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

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

jerry181855 2022-02-21 07:04:42

STM8S编程没有工具链

嗨,我想在我的项目中使用stm8s003f3。我的印象就像stm32一样,ide和工具链可能很容易获得。然而,事实并非如此。我安装了STVD作为我的IDE,并希望在C中进行编程的标准外围库。但我想要

超级电200 2019-06-03 13:33:50

使用IAR烧写STM8S003F3P6芯片

前不久使用IAR烧写STM8S003F3P6芯片,可能是因为烧写程序时仿真器接触不好,结果程序不能正常跑,然后就想着把程序擦除,于是就将下面选项中的Erase打了勾,结果就悲剧了,IAR怎么也烧

76r456546 2021-07-22 06:55:29

求助,请问哪里可以下载stm8s003f3u6tr封装

正在学习绘制PCB,缺少stm8s003f3u6tr的封装,求大佬给文件

uuwyfsdfsf 2023-08-07 07:03:25

STM8S_003_ TIM定时中断

STM8S_003_TIM定时中断

2020-03-20 10:46:06

加载更多
相关标签