嵌入式基础实验报告 第1篇
心率血氧监测系统器件清单
通过控制GPIO输出脚的高低电平来控制蜂鸣器发出声音
蜂鸣器连接PA6,当监测值不在安全范围内就将PA6置为高电平,蜂鸣器发出警报。当监测值在安全范围内,就将PA6置为低电平,蜂鸣器不报警
.h文件
.c文件
主函数
(1)支持连按:当按键连接的是GND,只要GPIO每一次扫描的到的数据是低电平状态,就相当于按下一次按键,同理接高电平也是一样。
(2)不支持连按 :当当按键连接的是GND,只要GPIO扫描的到一次数据是低电平状态记为 按下第一次按下按键,必须扫描到一次高电平后,再扫描的的低电平才能是第二次按下按键, 否则判断为一次按下。
(1)硬件上:通过连接金属触点构成闭合电路,使得STM32通过GPI0引脚检测到按键的状态变化 (2)软件上:通过中断方式出发 下降沿时触发事件
最终视频
在这个项目中我主要负责了蓝牙模块,按键模块和蜂鸣器报警模块,通过学习,我成功在STM32上集成了蓝牙模块,并实现了与其他设备的无线通信。我能够通过手机或电脑与STM32进行蓝牙通信,实现数据的收发和控制。并成功在STM32上实现了对蜂鸣器模块的控制,能够通过代码触发蜂鸣器发出不同频率和持续时间的声音,实现报警和提示功能。及STM32上实现了对外部按键模块的输入信号的读取和响应,能够通过代码实现对外部按键的单击、双击、长按等操作的响应。 同时我接下来想要实现的,蜂鸣器实现不同频率的报警。在本次项目中,我遗憾的地方时没有将SD卡模块实现,在前几周的学习过程中,我只能够将SD卡模块初始化到串口内,但第一次购买的SD卡读取器件及其不稳定,接口需要在和5V之间来回变换才能够实现初始化读取,后来换用了老师的器件,初始化读取稳定但可惜最后没有接入到系统中。
嵌入式基础实验报告 第2篇
(4) 将代码中的进栈、出栈指令STMFD/LDMFD分别改成STMFA/LDMFA、STMEA/LDMEA、STMED/LDMED,并将运行结果截图。
(1) 请解释上述模式切换指令;
很好,我选择求助 ChatGPT。 以下是ChatGPT(一种AI程序)给出的解释:
(2) 将运行结果及寄存器值截图;
(3) 将CPSR的格式写出来,并将程序运行的CPSR值截图。
嵌入式基础实验报告 第3篇
step 0:
此时程序走在第一步(还未执行),上图所示都是初始状态下的情况。
step 1:ldr sp, =stack_top
step 2:mov r0, #x
把x的值给 R0
step 3:str r0, [sp]
将 R0 的值保存到栈中
step 4:mov r0, #y
把y的值给 R0
step 5:ldr r1, [sp]
从堆栈中读取数据,并将其放入 R1
step 6:add r0, r0, r1
把 R0 和 R1 的值加起来
step 7:str r0, [sp]
step 8:b stop
代码结束 asm_1b
常量定义,类似于C语言中的 #define x EQU 45
意味着之后程序中 出现的 x
将会在预处理阶段被替换为 45
y EQU 64
意味着之后程序中 出现的 y
将会在预处理阶段被替换为 64
z EQU 87
意味着之后程序中 出现的 z
将会在预处理阶段被替换为 87
stack_top EQU 0x30200000
意味着之后程序中 出现的 stack_top
将会在预处理阶段被替换为 0x30200000
export Reset_Handler
表示 Reset_Handler 这个子程序可供其他模块调用。
定义一个代码段text
,CODE
代表它要定义的是一个代码段,READONLY
指定本段为只读,(代码段默认为READONLY)
嵌入式基础实验报告 第4篇
在文件中,修改预分频器的值及定时常数即可改变PWM周期
改为1KHz,根据公式 T = ( 1 + A R R ) ∗ ( 1 + P S C ) / F T=(1+ARR)*(1+PSC)/F T=(1+ARR)∗(1+PSC)/F 要改为1KHz,则需要将预分频器的值改为 9 即可。
嵌入式基础实验报告 第5篇
通过添加代码成功实现让LED1、LED2、LED3、LED4、LED5轮流闪光,分别使用固件库函数方法,寄存器操作方法,以及汇编语言方法。具体的代码部分请参照上一节中的内容。
实验结果图片:
通过添加代码成功实现按下任意键,蜂鸣器均响一声,分别使用了固件库函数方法,寄存器操作方法。具体的代码部分请参照上一节中的内容。
实验结果图片:
这次实验成功实现了当KEY1按下时LED7发红光、电机正转,当KEY2按下时LED7发绿光、电机反转,当KEY2按下时,LED7灭、电机停止;修改GPIO初始化程序和相关程序、改变硬件的连接后也能得到相同的结果,达到了预期的实验效果。