STM32硬件开发
STM32F103ZET6核心板
OV7725摄像头模块
TFT 3.2存LCD显示屏
CallMeJacky
如果你有梦想的话,就要去捍卫它 。
展开
-
【C语言】进制转换
十进制转换为二进制、八进制、十六进制的代码。#include "stdio.h"int main(){ char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int c[64],d,i=0,base; long n; printf("Enter a num...原创 2019-04-28 13:17:41 · 329 阅读 · 0 评论 -
【C语言】结构体的使用
结构体对于c语言的意义还是非常大的,利用c语言实现面向对象靠的就是结构体。下面给出一个具体的实例,说明一下在c语言中如何使用结构体,以及如何使用结构体指针。#include <stdio.h>#include <string.h>#define N 15struct student//类的声明{ long num; char name[20];...原创 2019-04-28 13:38:46 · 243 阅读 · 0 评论 -
【C语言】分别处理int型数据的高16位和低16位
我们经常需要求前几位和后几位分开进行操作。1. 通过与运算和移位运算实现。xl= x & 0x0000ffff;xh = (x & 0xffff0000) >> 16;2.用 union 数据类型typedef union { unsigned long int i; // 或 inti unsigned char ...原创 2019-05-20 20:04:05 · 9912 阅读 · 0 评论 -
仪表数字图像识别的传统方法
虽然现有很多机器学习算法能够准确地识别数字,但是传统方法对于一些需要离线识别且计算能力有限的下位机设备来说,仍然有非常不错的效果。因此,今天就向大家讲解一下传统的数字识别方法在仪表读数方面的应用。1.图像预处理技术1.1 主要流程图像处理依次需要进行图片预处理、字轮区域定位、字符分割和字符识别等过程。其中图像处理流程如下图所示。2. 详细过程2.1 灰度化为了减小图像原始数据量,本系...原创 2019-12-20 12:39:25 · 3957 阅读 · 4 评论 -
位图数据存储格式介绍
BMP是一种常见的图片格式,它由4部分组成,分别为位图文件头、位图信息头、调色板和图像数据。位图文件头的数据结构及其描述说明如下:typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOff...原创 2019-12-20 10:53:41 · 1869 阅读 · 0 评论 -
C语言中全局变量回顾
今天在做课设的过程中遇到了一个纠结的问题,如何将一个文件中的全局变量扩展到另一个文件中?代码如下:test1.c//外部全局变量int SendBuff[SENDBUFF_SIZE];//其他函数,可以使用上边的全局变量void othermethod(void){ //...}test2.c//将全局变量中的作用域扩展到本文件extern原创 2018-01-12 21:09:32 · 384 阅读 · 0 评论 -
SDIO读写SD卡
平台:STM32ZET6(核心板)+ST-LINK/V2+SD卡+USB串口线工程介绍:主要文件在USER组中,bsp_sdio_sdcard.c,bsp_sdio_sdcard.h和main.c,另外FatFs是用来后面移植文件系统使用的,对于本节内容暂时不需要。bsp_sdio_sdcard.c和bsp_sdio_sdcard.h文件主要参考教材《STM32库开发实战指南——基于STM32F0原创 2018-01-18 16:45:35 · 7893 阅读 · 5 评论 -
基于SD卡的FatFs文件系统(FatFs移植到STM32)
平台:STM32ZET6(核心板)+ST-LINK/V2+SD卡+USB串口线工程介绍:主要文件在USER组中,bsp_sdio_sdcard.c,bsp_sdio_sdcard.h和main.c,另外FatFs是用来后面移植文件系统使用的,对于本节内容暂时不需要。bsp_sdio_sdcard.c和bsp_sdio_sdcard.h文件主要参考教材《STM32库开发实战指南——基于STM32F0原创 2018-01-18 17:36:21 · 16605 阅读 · 10 评论 -
在SRAM中调试程序
经过前段时间的学习,我意识到了一些Keil编程调试的技巧,下面主要介绍一些关于Keil如何从SRAM中调试。首先,为什么要这样做,我在同样的那本书上看到的总结:1.下载速度快。RAM的写入速度比内部的Flash的写入速度快得多,且么有擦除过程,因此对于在RAM上调试程序时几乎时瞬间下载,而且我在写程序的过程中也发现,有些时候编译下载再运行是一个很慢的过程,需要几秒,遇到BUG总是修改完继续编译下载原创 2018-01-18 22:24:28 · 2396 阅读 · 0 评论 -
STM32模拟I2C时序读写EEPROM精简版
平台:STM32ZET6(核心板)+ST-LINK/V2+SD卡+USB串口线+外部EEPROM(不需要上拉电阻)工程介绍:主要文件在USER组中,bsp_i2c_ee.c,bsp_i2c_ee.h,bsp_eeprom.c,bsp_eeprom.h和main.c,其中bsp_i2c_ee.c中主要时基本的模拟I2C时序,而bsp_eeprom.c中主要利用前一个文件中定义的基本操作,进行EE...原创 2018-01-20 15:57:10 · 9304 阅读 · 6 评论 -
OV7670上位机实现
OV7670 是 OV(OmniVision)公司生产的一颗 1/6 寸的 CMOS VGA 图像传感器。该传感器体积小、工作电压低,提供单片 VGA 摄像头和影像处理器的所有功能。通过 SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率 8 位影像数据。该产品 VGA 图像最高达到 30 帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白...原创 2018-01-25 18:16:58 · 12606 阅读 · 64 评论 -
stm32中串口接收不定字节数据
平台:STM32ZET6(核心板)+ST-LINK/V2+USB串口线+SIM800C+杜邦线(用于连接SIM800C和STM32开发板) 串口接收不定长数据采取的思路是:在STM32内存中设置一个缓存区(数组),在中断中将数据逐个放入到缓存区中,然后判断一帧数据是否接收完成。 关键点:如何判断一帧数据是否接收成功? 思路:利用IDLE中断判断接收一帧数据完成,其中IDLE中断是...原创 2018-03-06 20:47:16 · 4804 阅读 · 0 评论 -
SIM800C实现GPRS上网的AT指令
平台:笔记本+USB转RS232串口线+SIM800C模块(联通SIM卡)实现电脑通过串口调试助手,发送AT指令,实现利用GPRS通信方式向TCP服务器发送消息。下面介绍几个常用的AT指令和含义(注意顺序):1. AT+CGDCONT=1,"IP","CMNET" 定义PDP移动场景2. AT+CGATT=1 激活PDP,获取IP地址3. AT+CIPCSGP=1,"CMNET" ...原创 2018-03-08 22:16:56 · 15661 阅读 · 3 评论 -
基于STM32的OV7725摄像头拍照实验
平台:STM32ZET6(核心板)+ST-LINK/V2+SD卡+USB串口线+鹰眼OV7725摄像头(注意,为了减少摄像头连线的麻烦,建议初学者选取单片机时选用带有摄像头接口的板子)工程介绍:需要移植FatFs文件系统,同时需要了解BMP位图的存储数据结构,从而实现将摄像头输出的RGB565像素数据直接输出到sd卡上,保存为*.bmp文件。1. BMP位图的存储1.1 数据结构介绍//BMP头文...原创 2018-04-15 13:44:55 · 32765 阅读 · 23 评论 -
STM32F103实现OV7725拍照存储为BMP位图
1.首先需要我们定义一下BMP的数据结构,需要定义几个结构体类型:分别为:BITMAPINFOHEADER(BMP的信息头)、BITMAPFILEHEADER(BMP文件的信息头)、RGBQUAD(彩色表,存放RGB565编码)以及BITMAPINFO(综合上面的三个结构体)。2.设置位图信息,并写入SD卡。注意非常重要的一点是,如果OV7725输出为RGB565格式,一定要配置压缩类型为3,同时...原创 2018-05-08 15:03:52 · 8321 阅读 · 9 评论 -
Fatfs文件系统的堆栈溢出问题(f_open函数第一次可以调用,第二次调用时出现程序死掉的现象)
今天写程序的时候,遇到了一种奇怪的现象:f_open函数第一次可以调用,第二次调用时出现程序死掉的现象。起初移植以为时Fat文件系统存在BUG的问题,后来看了很多类似的问题和解决方案后,将FIL结构体对象设置为全局变量 ,然后就可以避免该错误。如下图所示,将FIL结构体的两个fread和fwrite变量设置为全局变量,该方法避免了堆栈溢出现象。下图即该解决方案的来源。...原创 2018-05-09 21:59:47 · 7734 阅读 · 6 评论 -
USART串口收发数据中遇到的数据丢失问题
1.串口初始化配置//串口二初始化配置void usart2_init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; //开启GPIO时钟和串口2时钟 RCC_APB2Perip...原创 2018-05-20 09:59:23 · 17941 阅读 · 3 评论