stm32f103zet6 ili9341(fsmc) freertos 制作数字电子时钟

配置教程请参考 STM32F103ZET6 FREERTOS 双UART 多任务多串口输出(配置教程)

主函数和配置和该教程一模一样,不需要添加什么变动

唯一需要添加的是 在freertos.c 的 void StartTask02(void const * argument)中写如下代码

/* USER CODE BEGIN Header_StartTask02 */
/**
* @brief Function implementing the myTask02 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask02 */
void StartTask02(void const * argument)
{
  /* USER CODE BEGIN StartTask02 */
	char date_time[] = "2024-10-23 12:59:59";
	char str[30]; 
	int year = 2024;
	int month = 10;
	int date = 23;
	int hour = 12;
	int minute = 59;
	int second = 59;
	char month_t[3];
	char date_t[3];
	char hour_t[3];
	char minute_t[3];
	char second_t[3];

  /* Infinite loop */
  for(;;)
  {
    osDelay(996);
		second++;
		if(second == 60){
			second = 0;
### STM32F103ZET6 FSMC ILI9341 OV7670 FIFO SCCB 配置教程 #### 关于STM32F103ZET6 FSMC驱动ILI9341屏幕 STM32F103ZET6FSMC (Flexible Static Memory Controller) 可用于连接外部存储器或显示控制器,如 ILI9341。通过 FSMC 接口,可以实现快速的数据传输和控制信号同步。 以下是配置 FSMC 和初始化 ILI9341 屏幕的关键步骤: 1. **启用FSMC外设时钟** 在启动代码中,需使能 FSMC 外设时钟并设置 GPIO 引脚为复用功能模式。 ```c RCC_AHBPeriphClockCmd(RCC_AHBENR_FSMCEN, ENABLE); ``` 2. **GPIO 初始化** 将 FSMC 使用的 GPIO 设置为复用功能模式,并定义数据线、地址线以及控制信号(如 NE1、NWE、NOE 等)。具体引脚分配取决于硬件设计[^1]。 3. **FSMC 控制器初始化** 配置 FSMC 参数以适配 TFT 显示屏的工作频率和时序要求。 ```c FSMC_NORSRAMInitTypeDef FSMC_InitStruct; FSMC_NORSRAMTimingInitTypeDef Timing; /* 配置读写时序 */ Timing.FSMC_AddressSetupTime = 0x00; // 地址建立时间 Timing.FSMC_DataSetupTime = 0x0A; // 数据保持时间 /* 初始化 FSMC NOR/SRAM Bank1 */ FSMC_InitStruct.FSMC_Bank = FSMC_Bank1_NORSRAM1; FSMC_InitStruct.FSMC_Timing = Timing; FSMC_InitStruct.FSMC_Mode = FSMC_Mode_Normal; FSMC_NORSRAMInit(&FSMC_InitStruct); FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); // 启动 FSMC ``` 4. **ILI9341 初始化命令序列** 发送一系列指令到显示屏完成其内部寄存器配置。这些命令通常包括方向设定、像素格式选择等操作。 ```c void ILI9341_Init(void){ LCD_WriteReg(0xEF, 0x03); // 软件重置 LCD_WriteReg(0xCF, 0x00); // 功率控制 A ... } ``` --- #### OV7670 摄像头模块与 FIFO 缓冲区管理 OV7670 是一款 CMOS 图像传感器,默认支持 RGB 输出格式。当使用 FSMC 进行图像采集时,可以通过 FIFO 寄存器简化数据流处理逻辑。 ##### SCCB 协议简介 SCCB (Two-Wire Serial Interface) 类似 I²C 总线协议,主要用于访问 OV7670 内部寄存器来调整分辨率、帧速率和其他参数。 ###### 示例代码:通过 SCCB 修改 OV7670 分辨率为 QCIF (176×144) ```c void OV7670_SetResolution_QCIF(){ Write_OV7670_Reg(0xFF, 0x01); // Enter bank selection mode Write_OV7670_Reg(0xC5, 0x0D); // Set resolution to QCIF } ``` ##### FIFO 工作原理 OV7670 带有内置 FIFO 存储器,在连续捕获过程中可临时保存部分扫描行数据直到主机完成读取。这有助于缓解实时性压力。 - 当 FIFO 几乎满载时会触发中断通知 MCU 开始拉取新数据包; - 主控芯片应定期监控状态标志位判断当前缓冲容量情况以便及时响应请求。 --- #### 综合应用案例分析 假设目标是从 OV7670 获取灰度图片并通过蓝牙发送至远程设备,则整个流程如下所示: 1. 利用 SCCB 对摄像头进行初始校准工作,指定期望输出尺寸及色彩空间转换选项; 2. 执行周期性的 DMA 或轮询机制抓拍最新画面片段; 3. 应用算法提取感兴趣区域特征点或者压缩编码后再经由无线链路上传云端服务器端解析展示出来。 以上过程涉及到多个层次软硬件协同配合才能达成预期效果[^1]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值