单片机

老司机们学习STM32的技巧

笑着哭i 提交于 2020-03-12 15:47:46
老司机们学习STM32的技巧 单片机用处这么广,尤其是STM32,这么火!如何快速上手学习呢? 你问,如何系统地入门学习stm32? 这本身就是一个错误的问题。假如你会使用8051 , 会写C语言,那么STM32本身并不需要刻意的学习。 你要考虑的是, 我可以用STM32实现什么? 对于传统的电子工程师来讲,使用库编程可能会感到有一点虚,感觉没有脚踏实地的感觉。但如果你写过web、写过服务器端代码、写过桌面端代码的话,你就一定会理解API、封装、抽象的意义。 对于这个话题,看看其他老司机们自己的看法: 菜鸟同学: 单片机本身没啥好折腾的,重点还是软件架构,针对项目设计软件,深度研究一种单片机,其他单片机都大同小异,大多数菜鸟都把时间荒废在单片机本身应用上,然后会几个外设就说的很简单怎么样,这个就是为什么现在单片机开发人员混杂的原因,都认为很简单,但是大部分都是蜻蜓点水,让其开发个项目试试,简直惨不忍睹,如果让其换一个芯片,这货估计就要折腾一个星期来熟悉芯片,所以大部分看到如此提问的我都不好意思回答。 Fddfhh: 刚开始发现一款比较有意思的产品,主控用的是avr,把里面的代码反编译之后就想抄了,仔细想想要是还用avr很快也会被别人给抄去,这个时候发现了stm32这个片子,还带USB,于是乎就把反编译出来的代码移植到了stm32上,把通信接口由uart改成USB。 上善若水: 1

MDK stm32 AD&串口 软件仿真

让人想犯罪 __ 提交于 2020-03-12 13:47:54
Mdk软件调试,选项 选择use simulator 即软件仿真 下面红框中 一定按照上述文字一字不差填入,右下的两个一定要根据芯片填写妥当。 串口数据思路 借助串口工具将两个串口相连接 使用command将,mdk软件仿真串口输出在电脑串口上 虚拟串口工具====vspd,安装方法附带 https://blog.csdn.net/qq_34202873/article/details/88391265 串口调试助手 附带(自选) step1,利用虚拟串口将两个串口相连接,可以利用串口调试工具进行测试是否将两个串口连接 step2 开始仿真, Step3 命令行将MDK串口输出连接在电脑COM口上 MODE COM4 9600,0,8,1 ASSIGN COM4 <S1IN>S1OUT 第一行命令是改变com口模式, 第二行是将单片机(仿真虚拟软件)串口(Sx)映射(<SxIN>Sxout)到计算机COM口上。 Step4 开始运行,打开串口调试助手选择串口,此时上述被映射串口被占用,无法打开,需要打开的是与之配对的串口。 Step5 AD数据模拟输入 Perfect 来源: CSDN 作者: hanginghang 链接: https://blog.csdn.net/qq_35502383/article/details/104815855

51单片机学习笔记(1)——初识单片机

风流意气都作罢 提交于 2020-03-11 16:51:42
1、什么是单片机 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的 中央处理器CPU 、 随机存储器RAM 、 只读存储器ROM 、多种 I/O口 和 中断系统 、 定时器/计数器 等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的 计算机系统 。 单片机结构框图如下: 2、单片机能做什么 小到玩具车、电子手表,大到航天器、机器人,无论是数据采集、工业控制还是智能化仪器仪表及通信设备,到处都有单片机的身影。其主要的应用领域如下: (1)在机电一体化中的应用 。单片机与传统的机械产品结合使传统的机械产品结构简化、控制走向智能化,让传统的产品向新一代的机电一体化产品转变,这是机械工业发展的方向。 (2)在监控系统中的应用 。单片机应用于仪器仪表设备中促使仪器仪表向数字化、智能化、多功能化和综合化等方向发展。单片机的软件编程技术使长期以来测量仪表中的误差修正、线性化的处理等问题迎刃而解。 (3)在测控系统中的应用 。单片机可以用于各种工业控制系统、自适应控制系统、数据采集系统等。例如,工业上的锅炉控制、电机控制、车辆检测系统、水闸自动控制、数控机床及军事上的兵器装备等。 (4)在智能接口中的应用 。计算机系统,特别是较大型的工业测控系统采用单片机进行接口的控制管理,单片机与主机并行工作

51单片机和PC串口异步通信

冷暖自知 提交于 2020-03-10 10:25:15
单片机和PC机间的通信有很多方式,下面的程序主要用到的是51单片机的异步串行通信。 一.51单片机的串行通信管脚 P3.1为单片机的TXD管脚(Transfer Data),P3.2为单片机的RXD管脚(Receive Data)。 通过TXD管脚可以将CPU要发送的数据输出,RXD管脚可以将串行数据线传来的数据读入。 二.51单片机的串行通信控制寄存器SCON,电源控制寄存器PCON SCON: 其中,SM0,SM1控制着串行通信的工作方式。 SM0 SM1 工作方式 说明 波特率 0 0 0 移位寄存器 fosc/12 0 1 1 10位异步收发器(8位数据) 可变 1 0 2 11位异步收发器(9位数据) fosc/64或fosc/32 1 1 3 11位异步收发器(9位数据) 可变 其中工作方式1在使用当中比较多。 SM2为多机通信控制位,SM2=1,允许多机通信,=0不允许,实现点对点通信。这里先不讨论。 TB8用于储存发送数据的第9位。在方式2和方式3中,发送数据除了起始位,数据位,停止位外,还有一位校验位,存储在TB8中。 RB8用于存储接收数据的第9位。接收到传来的代码后,数据位存储在SBUF中,而校验位就存储在RB8中。通过分析,可以判别接受的数据是否正确。 TI为发送中断请求标志。当发送数据缓冲区为空的时候,TI通过硬件置1,通知CPU数据发送完毕

单片机成长之路(avr基础篇)- 003 AVR单片机的BOOT区

核能气质少年 提交于 2020-03-10 04:23:59
  BOOT区的由来基于一个简单的道理,即单片机的程序是保存在FLASH中的,要运行程序就必须不停的访问FLASH存储器。对于一般的FLASH存储器,数据的写入需要一定的时间来完成,在数据写入完成之前,存储器中所有的数据都是不可读的,这就在运行旧程序和写入新程序之间造成了一个矛盾。   使用BOOT区是解决这个矛盾的方法之一,它将FLASH存储器从物理上分为两个独立的区域,对其中的一个区的数据写入不会影响到另一个区的数据读取操作。我们可以让单片机的程序在其中一个区(通常是BOOT区)运行,而运行着的程序代码写入另外一个区(通常为应用程序区)内。   AVR高档单片机ATmega系列中含有BOOT代码区,即程序引导区,也可称器件自身监控区,有了此BOOT区监控,该器件就可对自己器件的Flash程序存储器及EEPROM数据存储器进行读、写操作,即实现自编程功能,也可称IAP在系统应用中编程,这种自编程程序区我们称其用户管理程序,简称用户程序。   BOOT区大小可根据实际需要用寄存器设定,并可锁定加密,使外界无法读取其监控。如果BOOT区监控设计得好,可把该器件的主要、关键控制对象放在BOOT区监控内(如中断控制),其它工作让用户自己设计,可变成傻瓜式控制器、检测仪,可远程对嵌入式设备进行检测、维护、升级等操作。也可通过有线、无线网络监控设备。实现秀才不出门,也可管世界

单片机中按键的短按,长按,单击,多击的驱动程序实现

旧城冷巷雨未停 提交于 2020-03-09 21:32:42
接触过的按键驱动中,大部分是使用延时函数消抖,或者是在扫描到按键状态之后,直接就在按键扫描程序内部对事件进行处理。一直在思考一个不使用延时函数同时兼容性和移植性较强的按键驱动程序。之前用了半天时间总算是写出来这个驱动程序,还不是很成熟,不足之处多多指正。 在讲解之前,先说明一下按键,短按,长按,单击,多击分别是如何区分的。这里非常感谢张俊老师编著的《匠人手机》这本书中关于按键的讲解,给了我很大的启发。 相关详细的说明,请参阅《 匠人笔记 》中180页开始的手记13—按键漫谈。 在本次的驱动程序,需要一个定时器,6个字节的静态变量的资源开销。其中静态变量为一个无符号16位变量:key_longtime(用于长按按键时计时),两个无符号8位变量:key_time(按键动作结束计时)、C (状态标志),还有一个按键标志结构体;按键扫描程序的流程如下: 图1 按键扫描程序流程 这个按键扫描程序我是放在定时为1ms的定时器中断服务函数中执行。代码如下: key.h文件 #ifndef _KEY_H #define _KEY_H #include "stm8l15x.h" #include "bsp.h" typedef enum{ NoClick = (u8)0x01, //无按键的按键号 SingleClick = (u8)0x02, //单击 DoubleClick = (u8)0x04

51单片机学习笔记——基于C与汇编(1) 初识51单片机

放肆的年华 提交于 2020-03-09 16:29:29
即便疫情如此还是逃避不了开学啊!最近开始学习8051系列单片机的基本原理与应用,不过作为一个学计算机的本科菜鸟,感觉写博客也力不从心,因而选择结合(盗版,嘿嘿)我一个学硬件的朋友的文章,组成一个系列。写博客是个学习的好手段,大家一起进步吧!能力所限,如果文中有所不妥,恳请指正! 该系列文章基于8051系列单片机,Keil4/Keil2,并主要使用C和汇编实现例程,汇编部分由我的大佬朋友(盗版对象)完成。本文参考了该文的内容: https://blog.csdn.net/qq_43327300/article/details/104698377 首先我们来介绍动手前我们需要先了解的预备知识。 0、MCS-51系列单片机简介 MCS-51系列单片机最早由intel公司推出(对,就是那个intel),当时包括51和52子系列,51子系列中包含了8051这一经典产品,我们现在往往使用8051代称MCS-51系列。 为了区分各个型号,MCS-51系列有着明确的命名规则: 现在去购买相关开发板一般会买到STC89C52等型号,笔者手上的开发板用的是STC89C516也是一个较为常见的衍生型号,由于这些单片机指令系统基本一致,因而在学习中区别不大。 接下来本篇主要是基于较为典型的8051单片机对MCS-51系列单片机进行介绍进行介绍。 1、MCS-51系列单片机硬件结构 1.1 内部结构

STM32 CubeMX 学习:004-PWM

╄→尐↘猪︶ㄣ 提交于 2020-03-09 09:51:59
背景 上一讲,我们介绍了STM32有关的定时器,并示范了如何使用定时器来定时。这一讲我们来试试PWM(Pulse Width Modulation, 脉冲宽度调制),这是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。 知识 脉冲调制有两个重要的参数,(在STM32中,这两个因素分别通过两个寄存器控制:TIMX_ARR和TIMX_CCRX) 输出频率,频率越高,则模拟的效果越好。 占空比。占空比就是改变输出模拟效果的电压大小。占空比越大则模拟出的电压越大。 PWM值:在一个周期内,开关管导通时间长短相加的平均值。导通时间越长,则直流输出的平均值越大。(因此,可以等效于模拟电路) PWM输出频率:指这一次导通到下一次导通的时间的倒数。 PWM占空比:指的是输出的PWM中, 高电平 保持的时间 与 该PWM的时钟周期的时间之比。 如,一个PWM的频率是1000Hz(时钟周期就是1ms,1000us),如果高电平出现的时间是200us,那么低电平的时间肯定是800us,那么占空比就是200:1000,也就是说PWM的占空比就是1:5。 PWM分辨率:分辨率也就是占空比最小能达到多少,如8位的PWM,理论的分辨率就是1:255(单斜率),16位的的PWM理论就是1:65535(单斜率)。频率就是这样的,如16位的PWM

蓝桥杯单片机学习过程记录(二十六)第七届国赛电压、频率采集设备

眉间皱痕 提交于 2020-03-08 21:15:52
蓝桥杯单片机学习过程记录(二十六)第七届国赛电压、频率采集设备 N555方波这部分没写,准备重新理解一下,其余部分都已经完成,遇到了两个问题,一是时钟芯片,调整时,记得调整完后重新初始化一下,二是采集电压波动时,由正常到高,有正常到低时的判断频率调整一下。 应用的内容: 数码管、矩阵按键、 IIC_Rb2电压采集 EEPROM的写入读取 DS1302时钟芯片 定时器 /* -------------------------------- 第七届频率电压采集 频率没写,其余部分写完。 2020.3.8 -------------------------------- */ # include <STC15F2K60S2.H> # include <ds1302.h> # include <iic.h> char s11_count_h , s11_count_m , s11_count_s , count_h , count_m ; unsigned int time0_t , dianya , dianya_h , dianya_m , dianya_temp ; unsigned char flag_yemian , flag_time0 , s4_count , dianya_count ; unsigned char seg [ ] = { 0xc0 , 0xf9 ,

单片机原理及应用第一节課

十年热恋 提交于 2020-03-06 01:04:26
引入: 有两种封装:双列直插式封装和贴片式封装。 单片机是一个集成在一块芯片上的完整计算机系统,尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件。 单片机概述: 1.什么是单片机(单片微型计算机/微控制器)? 单片机是一片半导体集成芯片,是集成了中央处理单元(CPU),存储器(RAM,ROM),并行I/O,串行I/O,定时器/计数器,中断系统,系统时钟电路及系统总线的微型计算机。 单片机使用时,通常是处于应用系统的核心地位并嵌入其中,所以国际上通常把单片机称为嵌入式控制器。 2.单片机的应用: (1)检测与控制 如:数控加工中心,花卉温室控制 (2)仪器仪表 如:高精度数字多用表,甲醛检测仪,农药检测仪,汽车衡 (3)消费类电子技术 (4)通信产品 (5)武器装备 (6)各种终端及计算机外部设备 (7)汽车电子设备 (8)智能家居 3.单片机的发展历史: 1971年 第一个四位单片机 1976年 八位单片机 80年代 推出MCS-51系列8位高档单片机 90年代 MCS-96系列的16位单片机 90年代后期 STM32系列 4.单片机的发展趋势: 单片机的发展趋势将是向大容量,高性能化,外围电路内装化等方面发展。 (1)CPU的改进:增加CPU数据总线宽度 (2)存储器的发展:片内程序存储器普遍采用闪烁(Flash)存储器;加大片内数据存储容量