关于STM32的片上资源,LCD ILI9341液晶屏的基本配置,SD卡的驱动及文件系统,OV7725摄像头功能的介绍已经在上一个章节中进行了详细的说明。硬件平台的搭建都是建立在STM32开发板与其他器件模块连接上的,本章节则主要采用自顶向下,层层细化的程序设计思想,分模块讲解整个系统的软件实现流程。
3.1顶层程序设计
STM32照相机基本流程可以描述为:系统初始化,拍照处理。首先是系统初始化,包括系统时钟配置,对按键的GPIO和中断使能,LED的GPIO初始化;再初始化LCD的GPIO,FSMC总线功能和内部寄存器;还有初始化SD卡FATFS文件系统并使能SDIO的中断;最后,在实现模拟SCCB总线后,OV7725还需要配置FIFO的GPIO和OV7725内部的寄存器,并初始化场信号线。接着,拍照处理:等待帧同步信号,进入摄像;等待按键,开始拍照(即液晶截屏)并将图片保存到SD卡中,见图3.1。
3.2系统初始化程序设计
3.2.1 GPIO初始化
在第二章的主控模块部分已经介绍了GPIO的寄存器和引脚的输入输出模式,对复用功能实现也做出了详细说明。在STM32控制下的LED,KEY的GPIO以及LCD,SD card,摄像头使用的所有GPIO或特殊功能引脚的设置都要通过流程图来实现(图3.2)。
3.2.2 LCD初始化
LCD初始化主要包括两个内容:FSMC总线配置,LCD寄存器配置,见图3.3。程序中的涉及液晶屏的读写操作(如清屏,设置液晶扫描方向以及写入图片信息),都是在向Bank1_LCD_C和Bank1_LCD_D两个区域分别写入命令和数据实现的。其中,命令/数据的含义可参考ILI9341参考手册上的内容,在第二章的液晶显示模块中也给出了部分指令的含义。
3.2.3 SD卡文件系统初始化
SD卡文件系统初始化可分两块:SD卡中断初始化和硬件初始化。如何设置中断和FatFs文件系统的函数接口前面都已经介绍过了,图3.4是整个SD卡文件系统的初始化流程图。
3.2.4 OV7725初始化
摄像头OV7725的初始化分为三大部分:SCCB总线和FIFO的GPIO初始化,传感器的初始化,场信号线的初始化。其中的SCCB总线时序在上一章已经讲过,图3.5是OV7725初始化的程序流程图。
图3.1 主程序流程图
图3.2 GPIO的配置及复用
图3.3 LCD初始化流程
图3.4 SD卡文件初始化流程
图3.5 OV7725初始化流程
3.3 拍照处理程序设计
前几个小节详细介绍了各个子模块的初始化的实现,从主程序框图上看,还要有FIFO的准备,图像采集与显示,中断服务程序,液晶截屏与保存子程序。FIFO的准备(使能数据出FIFO输出),图像采集与显示是通过反复的读FIFO的输出并往LCD寄存器写入数据的过程,这些可以参考第二章的液晶显示模块和图像采集模块中FIFO的时序。最后一小节的重点是液晶截屏和图片保存的流程控制,见图3.6。
图3.6 液晶截屏与保存流程
关键字:STM32 软件设计
引用地址:
基于STM32的照相机系统软件设计
推荐阅读最新更新时间:2024-11-11 17:39
STM32-(17):SPI与数码管,
数码管 数码管是一种应用很普遍的显示器件,从单片机、ARM到许多微型机控制系统及数字化仪器仪表中都用到数码管作为显示输出。 数码管的主要部分是七段发光_极管;数码管分为共阴极和共阳极两种;为了保护各段 LED ,需外加限流电阻。有的产品还附带有一个小数点,故有人叫其为八段式发光二极管。 由7个发光段的不同组合,从而实现十六进制数的显示。线面分别是共阴极和共阳极0-9的编码表。 数码管的连接方式 **段选端:**可以控制数码管显示内容; **位选端:**用于控制整个数码管是否工作:共阴极数码管,位选端要接地;共阳极数码管,位选端要接高电平 595芯片 串行转并行的芯片 引脚图 真值表 595工作
[单片机]
stm32的堆和栈
关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的。 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个 int main() { while(1); } BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632 编译后,就会发现这么个程序已用了1600多的RAM,要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了, 分析map,你会发现是堆和栈占用的,在startup_stm32f10x_md.s文件中,它的前面几行就有以上定义, 这下该明白了吧
[单片机]
stm32开发新方式-platformio
硬件测试环境: macOS stm32f103c8t6最小系统板 st-link v2 新建pio工程 创建工程文件夹并进入: mkdir test && cd test 查找自己适合的板子 pio boards 会看到以下结果,十里这里选择genericSTM32F103C8,这里执行这个命令,主要是查找对应自己最小系统板的board ID: ... disco_l152rb STM32L152RBT6 32Mhz 128kB 16kB ST STM32LDISCOVERY disco_f100rb STM32F100RBT6 24Mhz 128kB 8kB ST STM32VLDISCOVERY generic
[单片机]
STM32 USB设计单片机程序篇
首先,我们来看看usb的工作过程。 当usb设备接入到主机时,主机开始枚举usb设备,并向usb设备发出指令要求获取usb设备的相关描述信息,其中包括设备描述(device descriptor)、配置描述(configuration descriptor)、接口描述(interface descriptor)、端点描述(endpoint descriptor)等。这些信息是通过端点0(endpoint 0)传送到主机的。获取各种描述信息后,操作系统会为其配置相应的资源。这样主机就可以与设备之间进行通信了。 usb通讯有四种通讯方式控制(control)、中断(interrupt)、批量(bulk)和同步(sync
[单片机]
STM32DAC讲解及代码示例
DAC转换 STM32的DAC模块主要特点有: ① 2个DAC转换器:每个转换器对应1个输出通道 ② 8位或者12位单调输出 ③ 12位模式下数据左对齐或者右对齐 ④ 同步更新功能 ⑤ 噪声波形生成 ⑥ 三角波形生成 ⑦ 双DAC通道同时或者分别转换 ⑧ 每个通道都有DMA功能 DAC_OUT1 - PA4 DAC_OUT2 - PA5 DAC配置步骤 程序代码示例: //DAC通道1输出初始化 void Dac1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitType; RCC_APB2PeriphClockCm
[单片机]
意法半导体与 Sierra Wireless合作,简化物联网连接方案部署
整合STM32 MCU的低功耗、高性能和安全性与Sierra Wireless 的弹性的全球蜂窝物联网接入和边缘设备上云方案,简化物联网设备部署 中国,2021 年11月11日-- 服务多重电子应用领域的全球半导体领导者意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)和全球领先的物联网服务提供商Sierra Wireless宣布了一项合作协议,让STM32微控制器(MCU)开发社区能够利用Sierra Wireless灵活的蜂窝物联网接入和边缘设备云连接解决方案。 该协议可帮助解决方案开发者应对创建和部署物联网解决方案涉及的各种挑战,包括设备研发、蜂窝网络接入和与云服务连接等
[物联网]
STM32—SysTick使用方法
一、STM32的SysTick简介 SysTick是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。 systick的作用: 在单任务引用程序中,因为其架构就决定了它执行任务的串行性,这就引出一个问题:当某个任务出现问题时,就会牵连到后续的任务,进而导致整个系统崩溃。要解决这个问题,可以使用实时操作系统(RTOS). 因为RTOS以并行的架构处理任务,单一任务的崩溃并不会牵连到整个系统。这样用户出于可靠性的考虑可能就会基于RTOS来设计自己的应用程序。这样SYSTICK
[单片机]
单片机实验教学仿真软件设计
0 引言 目前,各高校顺应发展设置的单片机课程是机电、自动化等电类专业的一门重要课程,是一门多基础、多理论的实践性课程。在高职单片机教学过程中理论教学的发展已经较为完善,而实验教学由于受到经费的限制,提供的实验设备有限,不能满足学生的要求。 鉴于以上情况,开发单片机教学实验的全软件仿真。可以减少实验经费的开销,又便于增添实验内容,同时也可借用投影仪更加清晰地为学生做演示实验,非常有利于学生加深对所学理论知识的感性认识、掌握基本实验知识、方法、技能。对于有危险性的实验,虚拟实验平台更具有优势。 1 单片机实验教学软件的系统组成 由于单片机实验教学仿真软件系统较为复杂固将其设计为如干个子系统,对每个子系统建模和设计,最后
[单片机]