Advertisement

【STM32/CubeMX、HAL库】 西南交通大学智能嵌入式系统实验七:ADC

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本实验为西南交大智能嵌入式课程第七部分,重点介绍使用STM32及CubeMX软件结合HAL库进行ADC(模数转换器)编程与应用。 实验内容包括以下三个部分: 1. 使用ADC1通道3对PA3引脚的电压进行采样,并通过串行口返回采集到的数据值及其对应的电压值。可以通过调节电位器来观察不同情况下的运行结果。 2. 编写程序,采用光敏电阻作为传感器设计光电开关,以此控制LED1灯的状态(点亮或熄灭)。 3. 设计一个室内温控系统: - 通过PA3引脚采集的电压值表示当前环境温度。 - 温度阈值上限为2.5V,下限为1V。 对于不同的采样电压范围将采取如下措施: - 当采样电压低于1V(即温度过低时),蜂鸣器发出声音报警信号,LED1灯闪烁以模拟光报警,并且全彩灯开启作为加热的指示。 - 若采样电压在1V至2.5V之间,则认为环境温度处于正常范围内,此时不进行任何特殊操作:蜂鸣器保持静默、发光二极管熄灭以及电机停止转动。 - 当采样电压高于2.5V(即表明室内过热),系统会启动报警机制,包括让蜂鸣器发出声音警报和使LED1灯闪烁模拟光报警,并且驱动电机旋转以实现降温效果。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • STM32/CubeMXHAL西ADC
    优质
    本实验为西南交大智能嵌入式课程第七部分,重点介绍使用STM32及CubeMX软件结合HAL库进行ADC(模数转换器)编程与应用。 实验内容包括以下三个部分: 1. 使用ADC1通道3对PA3引脚的电压进行采样,并通过串行口返回采集到的数据值及其对应的电压值。可以通过调节电位器来观察不同情况下的运行结果。 2. 编写程序,采用光敏电阻作为传感器设计光电开关,以此控制LED1灯的状态(点亮或熄灭)。 3. 设计一个室内温控系统: - 通过PA3引脚采集的电压值表示当前环境温度。 - 温度阈值上限为2.5V,下限为1V。 对于不同的采样电压范围将采取如下措施: - 当采样电压低于1V(即温度过低时),蜂鸣器发出声音报警信号,LED1灯闪烁以模拟光报警,并且全彩灯开启作为加热的指示。 - 若采样电压在1V至2.5V之间,则认为环境温度处于正常范围内,此时不进行任何特殊操作:蜂鸣器保持静默、发光二极管熄灭以及电机停止转动。 - 当采样电压高于2.5V(即表明室内过热),系统会启动报警机制,包括让蜂鸣器发出声音警报和使LED1灯闪烁模拟光报警,并且驱动电机旋转以实现降温效果。
  • STM32/CubeMXHAL西六:定时器源文件
    优质
    本实验为西南交通大学智能嵌入式课程第六部分,主要内容是使用STM32和CubeMX开发环境结合HAL库来操作与配置定时器功能,并编写相关源代码。 实验内容包括: 1. 电子时钟设计:使用72MHz的时钟频率,并采用定时器3。 - 实现1秒延时功能并控制LED0闪烁。 - 在数码管上显示时间,格式为“12-00-00”。设置定时器以实现每秒更新一次的时间显示。 - 通过按下KB1、KB2和KB3键分别调整小时、分钟和秒钟。 2. PWM输出设计:使用72MHz的时钟频率,并采用定时器进行PWM信号生成。 - 设计一个可以产生0.1毫秒延时的功能,设置全彩灯RGB_R的占空比为50%。 - 通过按下KB1键来调整PWM信号的占空比。提供五级调整选项并且按键操作是循环模式。 - 实现全彩灯RGB_R呼吸渐变效果。 3. 外部脉冲计数设计:设计一个能够对外部脉冲进行计数的功能,该外部脉冲由开发板上的PIC单片机产生,并且在数码管上实时显示当前的计数值。
  • 西(五)
    优质
    本实验是西南交通大学嵌入式系统课程系列中的第五部分,侧重于实际硬件操作和软件编程相结合的学习体验,旨在提升学生在嵌入式领域的动手能力和问题解决技巧。 四、实验内容 1. 使用DMA方式编写串口程序。设置串行口波特率为115200bps,数据字长为8位,停止位为1位,并且不启用校验。 2. 同样采用DMA方式编写串口程序,将串行口的波特率设定为115200bps,数据字长设为8位,停止位置于1位并且没有进行任何校验。在此基础上实现一个简单的“心跳包”功能。
  • STM32西五中的DMA源文件
    优质
    这段简介描述的是在西南交通大学进行的一次针对STM32微控制器的嵌入式系统实验。实验内容聚焦于DMA(直接内存访问)技术的应用,旨在通过实际操作加深学生对硬件抽象层和数据高效传输的理解,并提供了相关的实验源代码文件以供参考学习。 实验说明: 1. 上位机向串行口发送一定长度的字符数据,开发板接收到后将这些数据从串口发回。测试单次发送与循环发送的效果,并记录下来。 2. 上位机通过串行口发送包含字母、数字和其他字符的数据,开发板接收后,在数码管上滚动显示其中的数字字符,其他字符则原路返回。 设计内容: 1. 设计两个计数器(计数器 1 和计数器 2),分别用于统计按键 KB1 和 KB2 的按下次数,并将实时的按压次数在数码管上显示出来。 2. 制定通信协议,把计数器 1 和计数器 2 的结果打包成数据帧并通过 DMA 方式发送到串行口。要求发送的数据与数码管上的数据显示同步。 实验材料包括两个文件夹和一个压缩包,其中一个仅包含滚动的数码显示以及按键计次显示在数码管的功能实现代码。单次或循环发送功能可以在 uart.c 文件中修改,也可以通过 CubeMX 重新生成配置来完成调整。
  • MARIE西设计中期报告
    优质
    本报告为MARIE项目在西南交通大学实施的中期总结,重点讨论了智能嵌入式系统的开发进展、技术挑战及解决方案,并展望未来工作方向。 ### MARIE西南交大智能嵌入式系统设计半期报告 #### 1. 模拟器介绍 ##### 1.1 体系结构 MARIE(Machine Architecture that is Really Intuitive and Easy)是一种专为教学目的设计的简化版计算机体系结构。它的主要目标是帮助学生理解和掌握计算机的工作原理。MARIE采用的是冯·诺依曼架构,这意味着程序和数据存储在同一内存空间内。 **图 1 MARIE 体系结构** MARIE的主要组成部分包括: - **寄存器** - **AC (Accumulator)**:累加器,通用寄存器,用于保存临时数据或运算结果。 - **PC (Program Counter)**:程序计数器,指示当前待执行指令的内存位置。 - **MAR (Memory Address Register)**:内存地址寄存器,保存当前要访问的内存地址。 - **MBR (Memory Buffer Register)**:内存缓冲寄存器,暂时存储从内存读取的数据或待写入内存的数据。 - **IR (Instruction Register)**:指令寄存器,保存当前正在执行的指令。 - **Out、In 寄存器**:用于输入输出操作。 - **存储器**:4K字的存储器,按照字进行编址,每个字包含16位。 - **输入输出设备**:模拟的输入输出设备,用于与外部环境交互。 ##### 1.2 主要指令集 MARIE的指令集非常简洁,每条指令长度固定为16位。下面是MARIE的主要指令集: - **算术运算指令** - **Add X**:地址X的内容与AC相加,结果保存到AC中。 - **Subt X**:AC减去地址X的内容,结果保存到AC中。 - **Addl XB**:将X作为操作数的指针,与AC相加,并保存到AC中。 - **ClearA**:将AC清零。 - **数据传送指令** - **Load X**:从内存地址X中取数存到AC。 - **Store X**:将AC的值存入地址为X的内存中。 - **Loadl XD**:将X处存储的内容作为指针,获取操作数存入AC。 - **Storel XE**:将X处存储的内容作为指针,将AC的值存入指向的内存。 - **输入输出指令** - **Input**:要求用户输入一个值,存入AC。 - **Output**:将AC的值输出。 - **控制、分支指令** - **Jump X**:跳转到地址X。 - **Skipcond(C)**:根据AC和C的值决定是否跳过下一条指令。条件包括: - C=000 && AC<0 - C=400 && AC=0 - C=800 && AC>0 - **Halt**:终止程序。 #### 2. 编写程序,观察程序进程 以下是一个具体的例子,该程序用于计算从1累加到20的和,并将结果保存到SUM中: ``` LOOP, LOAD X ADD SUM STORE SUM LOAD X ADD ONE STORE X SUBT CNT SKIPCOND 400 JUMP LOOP LOAD SUM OUTPUT HALT SUM, DEC 0 X, DEC 1 ONE, DEC 1 CNT, DEC 21 ``` - **程序解析** - **LOOP**:循环起始标记。 - **LOAD X**:从X处加载当前值到AC。 - **ADD SUM**:将AC的值与SUM处的值相加。 - **STORE SUM**:将AC的值存入SUM处。 - **LOAD X**:再次从X处加载当前值到AC。 - **ADD ONE**:将AC的值加1。 - **STORE X**:将新的值存回X处。 - **SUBT CNT**:从AC中减去CNT的值。 - **SKIPCOND 400**:如果AC等于0,则跳过下一条指令,否则继续执行。 - **JUMP LOOP**:返回到循环起始点。 - **LOAD SUM**:加载SUM的值到AC。 - **OUTPUT**:输出AC的值。 - **HALT**:程序结束。 - **执行过程分析** - 初始状态下,所有寄存器均为0,程序指令已经依次加载到内存地址中(从000H到00BH)。 - 执行过程中,PC会不断更新,指向下一个要执行的指令。 - AC寄存器将被用来进行加法运算和存储中间结果。 - MAR和MBR寄存器用于处理内存读写操作。 -
  • 西1-3源代码(SWJTU)
    优质
    本资源包含西南交通大学《嵌入式系统》课程实验一至三的完整源代码,适用于学习和研究基于该课程的嵌入式项目开发。 实验详细思路如下: 实验一:开发环境及开发板使用 1. 设计项目工程,使D1、D2循环交替点亮,并调整延时间隔直到双灯均亮。 2. 设计全彩LED RGB点亮程序,实现呼吸灯效果。 3. 设计全彩LED RGB渐变显示效果。 实验二:GPIO 实验 5. 编写控制蜂鸣器发声的程序,尝试改变声音高低。 6. 在数码管上编写自己的学号显示程序。 实验三:外部中断实验 1. 设置主程序为跑马灯以0.2秒的速度旋转;将KB1设置为下降沿触发的外部中断,在按下时使全彩LED中的R灯闪烁5次。 2. 设计应用,其中主程序是RGB循环点亮,当使用KB1作为外部中断时蜂鸣器播放门铃声,而使用优先级更高的KB2则控制电机顺时针旋转开门。
  • 西2020届操作一至
    优质
    这是西南交通大学为2020届毕业生设计的操作系统实验系列作业,包括从第一部分到第七部分的内容,旨在通过实践加深学生对操作系统的理解。 实验1:观察Linux的行为 通过本实验了解Linux系统的组织与行为,并观察各种存储系统状态的内核变量;熟悉这些结构与信息。 实验2:软中断通信 ① 该实验要求学生理解什么是信号,掌握软中断的基本原理;学会使用中断信号、进程创建及系统计时器。 ② 学生通过本实验能够学习到进程的创建方法,并加深对Linux中信号机制的理解。同时会利用软中断实现进程间的通讯。 实验3:进程调度 ① 掌握进程调度的概念 ② 了解并掌握Linux内核源码编写风格,重点理解各种进程调度策略算法,如FCFS、RR、SRT和Feedback等。 实验4:线程同步 ① 理解操作系统中的并发概念; ② 学习生产-消费者问题在并发环境下的处理方式; ③ 掌握Linux中线程编程机制及实现线程间的同步方法。 实验5:内存管理 ① 了解内存管理的基本原理,掌握分页与分段操作过程。 ② 理解虚拟内存技术的概念,并重点研究替换策略。 ③ 学习选择性页面置换算法如OPT、FIFO、LRU和CLOCK等的实现。 实验6:系统调用 学习如何创建一个系统调用,掌握重建内核的方法。
  • 西 机器.docx
    优质
    本文档为《西南交通大学机器学习》课程第七个实验的内容概要,包括实验目的、任务要求及操作步骤等信息,旨在加深学生对机器学习理论的理解与实践技能。 实验报告:朴素贝叶斯分类器 本实验旨在理解和掌握朴素贝叶斯分类器的基本原理与方法、极大似然估计技巧以及先验概率分布及后验概率概念,并熟悉该算法的训练流程。 作为一种基于贝叶斯理论的方法,朴素贝叶斯假设所有特征相互独立且呈高斯分布。其训练过程涉及计算各类别的先验概率和条件概率,同时进行参数(如均值与方差)估计。 实验中我们采用Python语言结合NumPy、SciPy库实现分类器的开发,并利用iris数据集作为测试样本,该集合涵盖用于训练及验证的数据子集。首先将Species列转换为数值标签(0, 1, 2),随后分别计算各类别下的统计参数和先验概率值。 接着应用朴素贝叶斯算法对测试数据进行预测并评估模型性能(准确率)。实验结果表明,该分类器在iris数据集中表现优异且具有较高的精确度。此外还观察到各类别的先验分布均匀一致,并且不同特征的高斯参数存在差异性。 整个实验成功地完成了从训练至验证的所有步骤,证实了朴素贝叶斯模型的有效性和准确性。除了算法本身外,报告也展示了如何使用Python和相关库来实现这一过程,并简要介绍了数据预处理、特征工程等关键技术点以及分类器评估指标(如准确率)的计算方法。 综上所述,本实验详细阐述了朴素贝叶斯分类器的工作原理与应用实例,并通过实际操作验证其在特定场景下的适用性。同时为读者提供了一套利用Python和科学库进行机器学习项目开发的基础框架和技术支持。
  • 西报告(完整版)
    优质
    《西安交通大学嵌入式实验报告(完整版)》是针对该校嵌入式系统课程设计的详细实验指导资料,包含多个经典实验项目及其解决方案,适用于学生和工程技术人员参考学习。 西安交通大学嵌入式系统专题实验(大四)实验报告合集。
  • STM32西四:异步串行信代码文件
    优质
    本实验为《STM32西南交大嵌入式课程》系列中的第四部分,专注于使用STM32微控制器进行异步串行通信编程。通过编写和分析代码文件,学生将掌握UART接口的配置与数据传输技巧,加深对嵌入式系统中常用通信协议的理解。 1. 向串行口发送一个字符数据。开发板接收到该数据后将其数值增加一并从串口发回。 2. 发送一个字符至串行接口,如果接收的数据是Y或y,则使跑马灯全部点亮;如果是N或n,则熄灭所有跑马灯;其他情况则让跑马灯旋转。 3. 重定向printf和scanf函数到串口进行数据的输入输出操作。 4. 向串行口发送一个字符,开发板接收到的数据如果为Y或y,则使跑马灯全部点亮;如果是N或n,则熄灭所有跑马灯;其余情况下,在数码管上显示该字符的ASCII码值,并在前面加上“XXH”。 5. 构建用于发送和接收数据的缓冲区,编写处理单字节、双字节、四字节及字符串格式的数据传输函数。接收到的字符串需从串口返回,并且将所接受到的内容显示于数码管上。 6. 定义一个基于中断机制的串行通讯协议,设置波特率为115200bps,数据位长度为8比特,停止位设为一位,并无奇偶校验。通过此接口向蜂鸣器、电机、跑马灯及数码管发送五字节命令。