STM32
爱吃肉的大高个
执着于单片机应用、电子设计大赛、嵌入式开发的有理想的咸鱼
邮箱 gyyjx123024@gmail.com
展开
-
STM32通信接口(一)串口
什么是串口毫无疑问,串口是我们接触到的第一种通信接口,无论是串口调试还是与外设的通信,串口的用途十分广。关于同步和异步,最简单的区分方法就是看在通信时需不需要接时钟线,像SPI、I2C等通信接口都需要接CLK线,毫无疑问它们都是同步的,而串口是一种拥有两种模式的通信接口,可以选择是否连接时钟线。至于串行和并行,区分的方法就是看数据是一位一位的发送还是以一个字节(8位)或16位的格式发送,显然并口的...原创 2018-04-18 21:36:53 · 12982 阅读 · 1 评论 -
STM32输出可控数量与频率的脉冲
最近在准备电赛做往年的题目,遇到了使用步进电机作为执行器的题目,步进电机有固定的步距角,所以每圈有固定的步数,比如我现在使用的步进电机的步距角为1.8度,所以说转一圈需要走200步,我使用的步进电机驱动器可以进行16细分,这样每转一圈就需要3200步。而这个驱动器使用脉冲来进行控制,每收到一个脉冲就会走一步,所以如果可以每次精确的控制输出的脉冲数,那么在不失步的情况下可以精确控制步进电机转...原创 2019-03-29 17:41:31 · 20642 阅读 · 16 评论 -
第七届蓝桥杯嵌入式编程题-----“电压测量监控设备”
第六届的试题还有些bug没有解决,所以先发出第七届的,还是和上次一样,暂时没有讲解。 main.c#include "stm32f10x.h"#include "led.h"#include "lcd.h"#include "eeprom.h"#include "key.h"#include "adc.h"#include "usart.h"#include ...原创 2019-03-22 17:14:40 · 2165 阅读 · 4 评论 -
第五届蓝桥杯嵌入式编程题-----“双路输出控制器”
近期在备战蓝桥杯嵌入式入队比赛,这是做的第一个编程题目,我会将自己做了的题目都记录下来,但是现在就没时间去详细的讲解了,只能先把代码记录下来,然后比赛完后在进行分析。 main.c#include "led.h"#include "usart.h"#include "lcd.h"#include "key.h"#include "pwm.h"#include "e...原创 2019-03-14 15:35:21 · 1744 阅读 · 1 评论 -
关于STM32F103C8T6内部FLASH容量的问题
在STM32中文参考手册的第3页就看到STM32MCU的名命规则如下 显而易见,C8T6应当是LQFP48封装的64k内部FLASH的MCU,但是在使用中发现,我们是可以对超过64K字节的FLASH空间进行读写的,而且MDK默认的下载算法也是针对128KFLASH的,如下图。 在网上查阅资料后发现,C8T6和CBT6(仅FLASH容量有区别)一般...原创 2018-12-10 22:15:28 · 46592 阅读 · 7 评论 -
STM32单个定时器四通道输入捕获
以前就纠结过能不能一个定时器进行多路的输入捕获,因为毕竟输出四路的PWM是轻松随意的,当时大概想了一下觉得可能会比较麻烦就一直没去尝试,最近组里的同学做方波测频和测占空比遇到了问题,又提到了这个,今天仔细想了一下有了思路就写程序然后上板子试了一下,解决了这个问题。 首先我们先看单路的输入捕获是怎么实现的 定时器的初始化函数://定时器2通道1输入捕获配置//ar...原创 2018-12-04 21:27:48 · 21699 阅读 · 20 评论 -
OpenMV数据打包发送以及STM32对数据的解析(串口方式)
今天尝试了使用Openmv用串口发送数据,32接收,遇到了一些坑,但是最后还是实现了,难住我的地方并不是关于传输的代码,而是那个板子串口3不知道因为什么原因接收到的数据是错误的,这个原因正在寻找,找到了再记录。 Python提供了便捷的将数据打包的方法。我使用的方法就是将数据以二进制的方式打包然后通过串口逐字节发送。 struct模块的pack(fmt, v1, v2,...原创 2018-10-26 19:21:39 · 43567 阅读 · 58 评论 -
错误解决:STM32F103串口1与串口3相同代码却结果不同
在前几天调试openmv时发现同样的代码串口1和串口3的结果却是不一样的,当时着实是把我坑了很久,怎么都找不到原因,用示波器看波形也是没有问题的,在Openedv网站上有位网友指出是我初始化代码的问题,在翻阅参考手册后终于发现了问题。 下列代码为我原本的初始化代码:#include "sys.h"#include "usart.h"#include "led.h"#i...原创 2018-10-28 12:19:13 · 8076 阅读 · 2 评论 -
keil中code和const的区别
Keil 51中的const与code & Keil MDK中的const与code 在Keil 51中,code修饰的变量放在ROM(Flash)中,而const修饰的变量为只读(不可修改),放在RAM中!可以用“code const”修饰变量,表示变量存储在ROM中,且为只读,由此看来“code”与“code const”修饰变量有一样的功用。 Keil MDK中的cons...转载 2018-09-27 18:34:05 · 6639 阅读 · 1 评论 -
FATFS文件系统学习笔记
什么是文件系统 负责管理和存储文件信息的软件机构,在磁盘上组织文件的方法。常用的文件系统 FAT/FATFS 小型嵌入式系统 NTFS WINDOWS CDFS 光盘 exFAT 更适用于闪存FATFS优点:免费开源,专门为小型嵌入式系统设计,c编写,支持FAT12, FAT16 与 FAT32,支持多种存储媒...原创 2018-09-01 10:34:01 · 36960 阅读 · 6 评论 -
SD卡及STM32的SDIO接口相关原理
SD卡 SD卡(Secure Digital Memory Card)即:安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。 SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC...原创 2018-08-28 14:09:55 · 25213 阅读 · 3 评论 -
STM32上的外部中断
今天记录一下关于外部中断的知识点以及在32上外部中断的相关寄存器以及配置的流程。一、原理介绍 首先,什么是中断 中断就是将正在做的事情停下来,先去完成另外一件事情,完成后继续回来做这件事。 比如:在吃饭的时候有电话打来,去接电话,打完电话后继续吃法。 在计算机科学中,中断(英语:Interrupt)是指处理器接收到来自硬件或软...原创 2018-05-31 13:37:47 · 2741 阅读 · 0 评论 -
STM32上的PWM
在昨天的实验室嵌入式组内分享会上我讲解了PWM、外部中断以及定时器的一些知识,在整理知识点以及制作PPT的过程中也对自己的知识进行了一个总结,所以打算写三篇博客来记录这三个方面的知识点,就以我最近使用的STM32作为平台来记录,起始这三个点是单片机可以说最为基础以及通用的点,任何一个MCU都会有,所以说总结一下还是很有必要的。 首先就是PWM。 在昨天的...原创 2018-05-30 18:49:03 · 9983 阅读 · 0 评论 -
使用stm32产生三角波和正弦波
最近在备战电赛,所以这几天研究了一下用32产生可以控制频率的波形的方法。 32的功能还是很强大的,F4有168MHZ的主频,时钟频率可以达到84MHZ,对于产生波形来说,如果只是产生中低频率的波形来说是完全够用的,借助DMA后产生5MHZ的正弦波是没什么问题的。 我也分享一下我产生三角波和正弦波的方式,因为方波的产生基本上都能做出来,是比较简单的,当然也有不少的...原创 2018-05-22 20:14:48 · 61853 阅读 · 24 评论 -
STM32通信接口(三)硬件SPI
一、概述 SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,是Motorola最先在其的MC68HCXX芯片上使用,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。 SPI接...原创 2018-05-03 21:49:03 · 27280 阅读 · 0 评论 -
STM32通信接口(二)IIC--软件模拟
一、概述 IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。 IIC是 由数据线SDA和时钟SCL构成的串行...原创 2018-05-01 17:03:17 · 16024 阅读 · 3 评论 -
STM32用一个定时器输出多路不同频率及占空比的PWM(输出比较模式)
我们使用STM32输出PWM时会使用定时器的PWM输出模式来进行生成,但是这样子生成PWM是有局限的,它只能生成四路频率相同的PWM,当你设定了TIMx_PSC(预分频寄存器)和TIMx_ARR(自动重装载寄存器),这时PWM的频率就被定下来了,为系统的时钟/TIMx_PSC+1/TIMx_ARR+1,你可以通过改变各个通道的CCR寄存器来改变占空比。但是如果我们想生成多路不同频率的PWM...原创 2019-04-07 16:13:44 · 50185 阅读 · 28 评论