单片机

STM32 串口通信基础知识

陌路散爱 提交于 2019-12-16 12:39:41
1、串口通信简介 通信接口的两种方式: 并行通信 -传输原理:数据各个位同时传输。 -优点:速度快 -缺点:占用引脚资源多 串行通信 -传输原理:数据按位顺序传输。 -优点:占用引脚资源少 -缺点:速度相对较慢 目前使用最多的还是串行通信,即便速度相对较慢,所以下面都是讲解串行通信。 ①串口通信分类: 串口通信按照数据传送方向,分为: (1)单工:数据传输只支持数据在一个方向上传输 (2)半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信 (3)全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力 ②STM32的串行通信的方式 同步通信:带时钟同步信号传输。 异步通信:不带时钟同步信号。 注意:一般所说的串口是USART(通用同步异步收发器),同步异步都支持的。STM32F10x系列芯片,包含3个USART和2个UART 2、STM32的串口通信原理 串口通信是单片机最基本的功能,很多传感器模块与单片机的连接都会用到串口功能。串口通信,顾名思义就是将一整条的内容,切成一“串”个体来发送或接收。发送的核心思想是:将字符串中的一个字符写到一个寄存器中(此寄存器只能存一个字符),写入后会自动通过串口发送,发送结束再写入下一个字符

初学单片机,该如何选择单片机开发板?

回眸只為那壹抹淺笑 提交于 2019-12-15 18:48:42
单片机是可编程器件,可以通过编程来实现逻辑功能,这不仅降低了产品设计的复杂度,更丰富了产品的功能。现在的电子产品,多是以单片机为控制核心,再根据不同的用户需求来搭建不同的外设电路。所以,单片机在电子产品设计中非常重要,学会单片机在找工作时具有非常大的优势。 1 以单片机为核心的产品框图 那么,初学者在接触单片机之处,该如何学习呢?如何学习单片机才最有效?这就涉及到单片机开发板了。 (此处已添加圈子卡片,请到今日头条客户端查看) 什么是单片机开发板?单片机开发板是专为学习单片机而设计的板子,板子上具有一颗具体型号的单片机,再扩展了常用的外设电路,可以供初学者方便的学习单片机的片上资源、外设电路以及程序的编写。单片机需要学习什么?学习单片机就是学习具体型号单片机的片上资源、外设电路的设计、寄存器的控制方式、库函数的使用方式,以及单片机的编程方法。 2 - 单片机开发板 可见,拥有一块单片机开发板,对初学者来说,是多么的重要,不仅方便了学习,更能在指导下循序渐进、按部就班提高学习效率。那么该如何选择合适自己的开发板呢?可以考虑从如下几个方面如数选择。 1 选择合适自己的单片机型号 单片机是一门强调动手能力的学科,与数学、物理等理科不同,学习单片机不建议每天抱着书本看,而建议直接选择一款具体型号的单片机去学习外设电路的设计和程序的编写。在选择单片机型号的时候,可以看一下自己周围的同学

单片机中断全局变量保护方法

℡╲_俬逩灬. 提交于 2019-12-15 14:28:40
首先要明白这几个知识点:关键字volatile的使用,原子操作,临界区的使用。明白的直接跳到文中的 4.全局变量的使用及保护 处查看。 1.关键字volatile 关键字volatile用于告诉编译器,说明被修身的变量可能会被意想不到地改变,防止编译器对代码进行优化。 比如如下程序: 1 ucNms=0x65;2 ucNms=0x66;3 ucNms=0x67;4 ucNms=0x68; 上述4条语句,如果变量在声明的时候(unsigned char ucNms;)没有使用volatile,那么编译器有可能对其优化,只编译最后一条语句ucNms=0x68;(即忽略前三条语句,只产生一条机器汇编代码);如果变量在声明的时候(volatile unsigned char ucNms;)使用了volatile,则编译器会逐一地进行编译并产生四条相应的机器代码(产生四条代码)。 精确地说就是,编译器在编译这个变量语句时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。所以下面几个情况在声明的时候需要用volatile关键字对其修饰: 1)并行设备的硬件寄存器(如:状态寄存器) 2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3)多线程应用中被几个任务共享的变量 2.原子操作 原子操作可以理解为不被打断的操作

新唐51单片机----挖坑

人盡茶涼 提交于 2019-12-15 01:40:18
1、定时器3中断与串口0中断冲突 开启了串口0中断,同时开启了定时器3中断,串口0中断处理函数如下: void SerialPort0_ISR(void) interrupt 4 { if (RI==1) //这个中断时接收跟发送共用的 { UART_RxData(&UART_DevRx); clr_RI; } } 以上中断处理函数中未清除发送完成产生的中断,如果在产生发送完成中断之后,使用定时器3中断。 定时器3中断将不能响应。 2、串口0连续接收失败 使用官方的DEMO:UART0_mode_3 发现电脑串口连续发送10个字节数据,产生接收数据丢失的现象。 但是间隔一定时间发送1个字节数据,发送一个10字节数据,没有数据丢失。 来源: CSDN 作者: 爱FC的捷哥 链接: https://blog.csdn.net/a3748622/article/details/103459723

多种单片机结构和原理讲解

给你一囗甜甜゛ 提交于 2019-12-14 07:32:55
89C51单片机结构框图 1、一个8位 的微处理器CPU。 2、片内数据存储器(RAM128B/256B):用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。 3、片内4kB程序存储器Flash ROM(4KB):用以存放程序、一些原始数据和表格。 4、四个8位并行I/O(输入/输出)接口 P0~P3:每个口可以用作输入,也可以用作输出。 5、两个或三个定时/计数器: 每个定时/计数器都可以设置成计数方式,用以 对 外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果 实现计算机控制 6、一个全双工UART的串行I/O口:可实现单片机与单片机或其它微机之间串行通信。 7、片内振荡器和时钟产生电路:但需外接晶振和电容。 8、五个中断源的中断控制系统。 9、具有节电工作方式:休闲方式及掉电方式。 在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。此时的电流可降到大约为正常工作方式的15%。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬件复位为止。这种方式下的电流可降到15 μA以下,最小可降到06 μA。 结构 : 由中央处理单元(CPU)、存储器(ROM及RAM)和I/O接口组成。89C51单片机内部结构如图所示: 下面介绍的是mcs-51 MCS

单片机蜂鸣器的控制程序与驱动电路图

ⅰ亾dé卋堺 提交于 2019-12-14 02:24:44
蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振荡源,如图1中所示,给了 BUZZ 引脚一个低电平,蜂鸣器就会直接响。而无源蜂鸣器内部是不带振荡源的,要让他响必须给 500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响。有源蜂鸣器往往比无源蜂鸣器贵一些,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,此外无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来“do re mi fa sol la si”的效果,可以用它制作出简单的音乐曲目,比如生日歌、两只老虎等等。 来看一下图1的电路,蜂鸣器电流依然相对较大,因此需要用三极管驱动,并且加了一个 100 欧的电阻作为限流电阻。此外还加了一个 D4 二极管,这个二极管叫做续流二极管。我们的蜂鸣器是感性器件,当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。而我们知道,电感的一个特点就是电流不能突变,导通时电流是逐渐加大的,这点没有问题,但当关断时,经“电源-三极管-蜂鸣器-地”这条回路就截断了,过不了任何电流了,那么储存的电流往哪儿去呢,就是经过这个 D4 和蜂鸣器自身的环路来消耗掉了

单片机内部结构原理,让你豁然开朗

谁都会走 提交于 2019-12-13 11:49:44
一、单片机内部结构分析 我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。 二、几个基本概念 1、数的本质和物理现象 我们知道,计算机可以进行数学运算,这令我们非常难以理解,计算机吗,我们虽不了解它的组成,但它们只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:

单片机GPIO的几种模式

℡╲_俬逩灬. 提交于 2019-12-13 07:04:25
http://www.openedv.com/forum.php?mod=viewthread&tid=21980&extra=page%3D1%26filter%3Ddigest%26digest%3D1 http://www.51hei.com/bbs/dpj-137404-1.html GPIO的几种模式: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 浮空:顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了。 开漏:就等于输出口接了个NPN三极管,并且只接了e,b. c极 是开路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出1的时候,就可以是5V电压,也可以是3.3V电压了.但是不接电阻上拉的时候,这个输出高就不能实现了。 推挽:就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻. 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中

多种单片机结构和原理讲解

我与影子孤独终老i 提交于 2019-12-12 10:34:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 89C51单片机结构框图 1、一个8位 的微处理器CPU。 2、片内数据存储器(RAM128B/256B):用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。 3、片内4kB程序存储器Flash ROM(4KB):用以存放程序、一些原始数据和表格。 4、四个8位并行I/O(输入/输出)接口 P0~P3:每个口可以用作输入,也可以用作输出。 5、两个或三个定时/计数器: 每个定时/计数器都可以设置成计数方式,用以 对 外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果 实现计算机控制 6、一个全双工UART的串行I/O口:可实现单片机与单片机或其它微机之间串行通信。 7、片内振荡器和时钟产生电路:但需外接晶振和电容。 8、五个中断源的中断控制系统。 9、具有节电工作方式:休闲方式及掉电方式。 在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。此时的电流可降到大约为正常工作方式的15%。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬件复位为止。这种方式下的电流可降到15 μA以下,最小可降到06 μA。 结构: 由中央处理单元(CPU)、存储器(ROM及RAM)和I/O接口组成