关于ADC单次扫描和连续扫描的操作指导(STM32F103ZET6正点原子版)作者 江汉大学 计科224尹伦能

STM32CubeMX环境配置

1 ADC1配置

 

选中ADC1,然后勾选IN0,其余设置均默认不变(此为单次扫描,若是连续扫描,只需要将上图中的Continuous Conversion Mode由Disabled变为Enabled即可)。

2 RCC及时钟配置

 

选中RCC,然后在HSE一栏选择Crystal/Ceramic Resonator。

接着是时钟配置,和之前实验一样的配置方法,这里不再赘述。

3 SYS配置

 

SYS界面,在Debug里选择Serial Wire。(选择使用SWD协议下载和调试)

4 I2C配置

 

选择I2C1,然后选择I2C,其余配置默认不变。

5 芯片引脚图展示

 

配置完所有环境后,引脚图大致是图片所展示的。

Keil 环境配置

1 OLED配置

详细操作可以参考老师的这个博客

 

 

解压完老师的OLED_IIC压缩包,将OLED_Classic文件夹中的OLED.c放入Core文件夹下的Src中

 

 

将OLED_Classic文件夹中的OLED.h和OLED_Font.h放入Core文件夹下的Inc中

 

 

然后在Keil中按照图示操作(上面两张图片)添加OLED.c文件即可

2 代码修改

 

 

头文件添加#include "oled.h"。

HAL_StatusTypeDef HalState;  //HAL库函数返回状态
uint16_t Ret; //返回值
uint16_t ADValue; //AD转换值
float Voltage; //电压值
void SystemClock_Config(void);上方添加这段代码。
uint16_t StartAndGetOneResult(){
    HAL_ADC_Start(&hadc1);  //启动ADC转换
    HalState= HAL_ADC_PollForConversion(&hadc1, 10);//等待转换完成
    if(HalState == HAL_OK){
          Ret=HAL_ADC_GetValue(&hadc1);  //获取ADC转换结果
    } else{
        Ret=0;
    }
    //HAL_ADC_Stop(&hadc1);
    return  Ret;
}

void SystemClock_Config(void);下方添加这段代码。

 
OLED_Init();        //OLED初始化
/*OLED显示*/
OLED_ShowString(1,1,"ADValue:");
OLED_ShowString(2,1,"Voltage:0.00V");

main函数while循环上方添加这段代码。

 
ADValue= StartAndGetOneResult();  //启动ADC转换并获取结果
        OLED_ShowNum(1,9,ADValue,4); //显示AD转换值
        Voltage=(float) ADValue/ 4095 *3.3;  //计算电压值
        OLED_ShowNum(2,9,(uint32_t)Voltage,1); //显示电压值整数部分
        OLED_ShowNum(2,11,((uint16_t)(Voltage * 100)) % 100,2); //显示电压值小数部分
        HAL_Delay(100);
main函数while循环里面添加这段代码。

最终界面图如下面两张图所示

 

 

结果图展示

 

 

每一次随着电位器旋转,OLED屏幕上显示的电压值会发生变化。共有六种电压值情况。

(电位器有三个引脚,一个引脚接GND,一个引脚接3.3V,另外一个接ADC通道PA0,简单的排列A(3,3)即可得到电压值的种数)

以上展示的是其中的一种情况。

参考资料:

用HAL库改写江科大的stm32入门-7-1 ADC

用HAL库改写江科大的stm32入门例子4-1 OLED

​ 作者:计科224尹伦能

### STM32F103ZET6 正点原子开发板教程及相关资源 对于希望深入了解并获取有关 **STM32F103ZET6 正点原子战舰开发板** 的教程资料的开发者而言,可以从多个方面入手。以下是详细的说明: #### 一、官方文档与硬件资料 该开发板的相关硬件资料已经存储于公开仓库中,包含了 MCU 及其外围设备(如 LCD 屏幕、WiFi 蓝牙模块等)的技术细节[^1]。通过访问项目地址 `https://gitcode.com/open-source-toolkit/364e5` ,可以找到完整的硬件设计文件以及相关的技术手册。 #### 二、固件库与驱动程序支持 为了简化基于 STM32 微控制器的应用开发过程,STMicroelectronics 提供了一个标准外设库 (Standard Peripheral Library),同时也推荐使用 HAL 库来实现更高级别的抽象功能。HAL 库能够帮助程序员快速上手而无需过多关注底层寄存器操作[^2]。 ```c // 示例代码展示如何初始化 GPIO 引脚作为输出模式 #include "stm32f1xx_hal.h" void GPIO_Init(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置PA5为推挽输出 */ GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } ``` 上述代码片段展示了利用 ST 官方提供的 HAL 函数完成简单 I/O 初始化的过程[^3]。 #### 三、社区贡献的学习材料 除了官方发布的文档之外,在线还有许多由爱好者制作的教学视频博客文章可供参考。例如,“正点原子”本身也推出了配套教材《STM32 单片机权威指南》,这本书籍结合实际案例讲解了从基础到进阶的知识体系[^4]。 另外值得注意的是,GitHub 或其他开源平台上可能存在一些第三方整理好的笔记或者实验指导书链接集合,它们往往能提供更加直观易懂的内容形式给初学者带来便利。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值