这几天,学校组织了为期5天的关于基于stm32的仿真的课程设计,最后一天,我们要进行实训项目的测验,要独立完成一个项目,具体有以下要求:
需要源码的小伙伴,在文章末尾有惊喜哦~
原理图绘制:
按键 6个
LED灯 4盏+1盏
蜂鸣器 1个
温湿度传感器 1个
要求:
(1)按下按键key1 , 开启LED跑马灯(4盏)
(2)按下按键key2 , 关闭LED跑马灯(4盏)
(3)按下按键key3 , 控制独立的LED 每500ms 闪烁一次-----使用定时器 TIM_cmd(TIM2,ENABLE)
(4)按下按键key4 , 关闭独立的LED 闪烁-----使用定时器 TIM_cmd(TIM2,DISENABLE)
(5)按下按键key5 , 开启蜂鸣器
(6)按下按键key6 , 关闭蜂鸣器
(7)温湿度检测报警,当温度超过30度或者湿度超过80%时,蜂鸣器报警
加分项1:
添加2个按键
按下按键7,跑马灯加速,按下按键8,跑马灯减速
满分项:
添加显像管(seg),把温湿度显示在显像管中。
因为博主并不是主攻嵌入式开发的,所以5天时间对于嵌入式开发的研究还远远不够,因此,对于此次作业项目,并没有完成最后一个满分项,但我还是想将此次完成的项目进行记录,以作纪念。
一、Protues仿真部分
二、keil工程
#include "stm32f4xx.h"
#include "sys.h"
int SIGN = 10000;
void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<SIGN;j++);
}
//延时函数--毫秒级别
//VAL计数器是24bit的寄存器,所以最大值是16777215
//所以nms的最大值是 199
void delay_ms(int nms){
uint32_t temp;
//延时nms毫秒需要的计数数值,把它交给重载计数器
SysTick->LOAD = 84000*nms;
//将VAL计数器的数值赋值为0
SysTick->VAL = 0;
//将控制器的0bit位赋值为1&#