基于STM32F1的开源小项目
在前面几篇文章中,将这个项目的各个部分都做了简单的介绍,今天在这里作为一个完整版分享给大家使用。喜欢的话,可以自行获取。演示视频观看过演示视频的话,这是一个很好的课设,或者作为初学者入门实践一个首选。本项目没有使用RTOS操作系统,是一个裸机程序,使用的是一个前后台的框架。中断回调函数用来查询各个状态是否发生并做好标记,然后在main函数中进行相应的处理。在进入到main函数之后,是对各个硬件部分
·
一. 简介
在前面几篇文章中,将这个项目的各个部分都做了简单的介绍,今天在这里作为一个完整版分享给大家使用。喜欢的话,可以自行获取。
演示视频
观看过演示视频的话,这是一个很好的课设,或者作为初学者入门实践一个首选。
欢迎关注微信公众号
FPGA之旅 回复 STM32-Project1 获取下载链接
二. 项目框架介绍
本项目没有使用RTOS操作系统,是一个裸机程序,使用的是一个前后台的框架。中断回调函数用来查询各个状态是否发生并做好标记,然后在main函数中进行相应的处理。
在进入到main函数之后,是对各个硬件部分进行初始化,并进行开机动画的加载,这也是一个标准的流程。
uart_init(115200);
delay_init();
LCD_Init();
TIM4Init(); //延时
InfraredInit();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LCDDMAFullOn(BackGround);
Boot_Animation(); //开机动画
LCDDMAFullOn(BackGround);
然后就是根据当前的模式进入到不同的if语句中执行相应的函数,默认为主界面,在里面是一个while循环语句。通过按键的值执行相应的操作,在每一次操作完后,要将按键的状态复位。SelectUp和SelectDown分别为光标的上下移动,切换状态的时候,利用break即可跳出。
其他的每一个状态的实现过程都是这样的写法,非常方便扩展。
if(CurrMode == Main) //主界面
{
LCDDMAFullOn(BackGround);
MainInterface();
while(1)
{
if(KEYState == KEYLEFT)
{
SelectUp();
KEYState = KEYNONE;
}
else if(KEYState == KEYRIGHT)
{
SelectDown();
KEYState = KEYNONE;
}
else if(KEYState == KEYUP)
{
CurrMode = (enum State)(CurrIndex + 1);
if(CurrMode == 3)
CurrMode = Photo;
KEYState = KEYNONE;
break;
}
}
}

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)