江科大/江协科技 STM32学习笔记P1-3


STM32简介

1、STM32与ARM

什么是 ARM ?简单说就一种性能出众的 32位处理器的内核架构。
什么是STM32?简单来说就是一款可以控制电子器件的ARM芯片。在江科大的视频中我们学习的是STMF103C8T6,ST指意法半导体公司名;M指微控制器;32指32位;F是类型,常用类型:F-通用型,S-简单型,L-低功耗,H-高性能;103指子系列分类;C指引脚数,常用引脚数:C是48脚,R是64脚,V是100脚,Z是144脚;8指存储量,8代表64KB,B代表128KB;T是指 LQFP 封装;6是工业级 -40~85℃的工作温度范围。简单了解即可,不用背。

2、面包板

面包板就是不用焊接、随意插拔各种电子器件的电路板,在下图1.1中我框出了一列的6部分,每一部分对应其部分的一整行,1、5正极,2、6负极,3和4部分会插上电子器件,然后再接线出来连到正负极或者系统板上。
在这里插入图片描述

图1.1

问:是不是1、2、3连线时只能连同一列?
答:不是,在下图1.2中我简单画了一下面包板的电路图,很清楚的看到1、2部分是一整条贯通的,在同一行中插在哪列孔位都一样,3、4是分别竖着连通的,在同一列中插在哪一行都一样。不知道这样描述清不清晰。
在这里插入图片描述

图1.2

3、片上资源/外设

在这里插入图片描述

NVIC

内核里面用于管理中断,比如配置中断优先级

SysTick

内核里的定时器,主要用来给操作系统提供定时服务

RCC

对系统的时钟进行配置,使能各模块的时钟。其他外设上电默认没有时钟,操作无效,外设不工作,这样的目的是降低功耗

GPIO

接外设

AFIO

完成复用功能端口的重定义、中断端口的配置不明白这里

EXTI

配置外部中断后,引脚变化就可以触发中断

TIM

高级定时器、通用定时器、基本定时器。可以完成定时中断、测频率、生成PWM波形、配置成专用的编码器接口等功能

ADC

内置12位AD转换器,可直接读取IO口的模拟电压值,无需连接外部AD芯片

DMA

代替CPU完成内部功能间的数据传递

USART

三 种常用的通信方式,1、TTL电平直接连接,多用于单片机与带有 USART 串口的模块通信,比如WIFI模块、GPS模块、蓝牙模块、单片机与计算机的通信;2、RS232,用于工业控制类设备,常见于计算机与工控设备之间的通信,比如计算机与PLC之间的通信。3、RS485,通信线长度更长、传输速度更快,用于比如电梯控制。

I2C

每组I2C总线上只能有一个主设备,目前 I2C 总线主要应用于单片机周边芯片 / 模块的低速通信,也就是近距离低速通信,很多EEPROM 存储器、温度传感器、RTC 时钟、气压传感器等都使用 I2C 总线作通信接口。
半双工,不能同时收发数据

SPI

SPI总线也有主设备和从设备,优势是通信速度快且稳定,没有地址的概念,不在通信数据里放入地址信息,而用硬件选择总线上的设备,每个从设备都有一条开关控制线(CS线)与主设备独立连接,主设备想与哪个从设备通信时就开启那个从设备的开关控制线。
全双工,能同时收发数据

CAN

一般用于汽车领域

USB

各种USB设备

RTC

完成年月日、时分秒的计时功能,可接外部备用电池。。时钟频率越高,单片机运行程序越快,所表示出的运行速度就越快。所以说单片机的运行速度取决于时钟频率,时钟频率取决于时钟源的频率。时钟源又分为振荡器和分频器,它们两个共同决定了时钟频率。

CRC

校验,判断数据的正确性

PWR

可以让芯片进入睡眠模式等状态来省电

BKP

当系统掉电时仍可由备用电池保持数据

IWDG

独立看门狗就是有独立时钟的看门狗,系统出现问题时,独立看门狗可独立工作。因为电磁干扰或者程序设计不合理出现死循环时,看门狗可及时复位,保持系统稳定。

WWDG

窗口看门狗使用系统主时钟源。窗口看门狗没有独立时钟源,而是和 ARM 内核共用主时钟。窗口看门狗有早期预警中断功能。

DAC

可以在IO口直接输出模拟电压,是ADC模数转换的逆过程

SDIO

读取SD卡

FSMC

可以用于扩展内存后者配置成其他总线协议

USB OTG

可以让STM32作为USB主机去读取其他USB设备

4、芯片引脚定义

在这里插入图片描述
在这里插入图片描述

1

备用电池供电的引脚,可接一个3V的电池,系统断电时给内部的RTC时钟和备份寄存器提供电源

2

IO口,根据程序输出或读取高低电平;侵入检测,防拆;RTC,输出RTC校准时钟,RTC闹钟脉冲或秒脉冲

3、4

IO口或接32.768KHz的RTC晶振

5、6

接系统的主晶振,一般8MHz,由芯片内部的锁相环电路进行倍频,最终产生72MHz的频率,作为系统的主时钟

7

系统复位引脚,N代表低电平复位

8、9

内部模拟部分的电源,比如ADC、RC振荡器。VSS负极接GND,VDD正极接3.3V

10-19

IO口,PA0兼具wakeup的功能,可以用于唤醒处于待机模式的STM32

20

IO口;BOOT引脚用来配置启动模式

21、22

IO口

23、24

系统的主电源口

35、36、47、48

因为STM32内部采用了分区供电的方式,所以供电口多

25-33

IO口

34、37-40

IO口;调试端口,用来调试程序和下载程序,支持SWD和JTAG两种调试模式,SWD两根线,JTAG五根线,STLINK用SWD方式,占用PA13、PA14,剩下的可以切换为普通IO口,但要进行配置

41-43、45、46

IO口

44

做启动配置

5、最小系统电路

在这里插入图片描述

供电

1-5供电部分,加滤波电容,5接备用电池,给RTC和备份寄存器服务,如果不需要可以不接

晶振

接8MHzd的主时钟晶振,连接5、6号引脚,接两个电容作为起振电容,电容另一端接地
如果需要RTC功能,再接32.768KHz的晶振,电路同上,接在3、4号引脚,OSC32就是32.768KHz晶振,32768是2的15次方,内部RTC电路经过2的15次方分频,就可以生成1秒的时间信号了。

复位

提供复位信号:NRST接7号引脚,低电平复位,上电瞬间没电,电源通过电阻向电容充电,此时电容短路,NRST引脚产生低电平,电容逐渐充满电相当于断路,NRST被R1上拉为高电平,上电瞬间先低后高,这个低电平为STM32提供上电复位信号。还有个并联按键手动复位,按下时电容被放电,NRST引脚接地,相当于手动产生低电平复位信号。

启动配置

H1让BOOT引脚选择3.3V还是GND,在最小系统板上用跳线帽充当开关
在这里插入图片描述

下载端口

根据怎么下载程序设计


科大32单片机(通常指科技的MCU)通过RS-485通信协议实现数据传输,需要一些硬件连接和软件编程。首先,你需要准备一个支持RS-485通信基本代码示例,假设使用的是Atmel AVR系列的单片机(如ATmega328P),并且已经配置了USART(通用异步收发器): ```c #include <avr/io.h> #include <util/delay.h> // 引入延时函数 #define RS485_RTS_PIN PB0 // 发送数据时拉高RTS #define RS485_DIR_PIN PB1 // 方向控制,0为发送,1为接收 #define RS485_RX_PIN PA0 // 接收数据的引脚 #define RS485_TX_PIN PA1 // 发送数据的引脚 #define BAUDRATE 9600 // 设置波特率 void rs485_init() { DDRB |= (1 << RS485_RTS_PIN); // 设置RTS为推挽输出 DDRB |= (1 << RS485_DIR_PIN); DDRA |= (1 << RS485_TX_PIN); DDRA &= ~(1 << RS485_RX_PIN); UCSR0B = (1 << UCSZ01) | (1 << RXEN0) | (1 << TXEN0); // 设置波特率为9600 } int main(void) { rs485_init(); while(1) { if(RS485_DIR_PIN == 0) { // 发送数据 UCSR0D |= (1 << UDRI0); // 发送中断标志 UBRR0L = ((F_CPU / BAUDRATE) - 16) >> 1; // 计算UBRR值 PORTB |= (1 << RS485_RTS_PIN); // 发送开始 while(!(UCSR0A & (1 << UDRE0))); // 等待发送缓冲区空闲 UDR0 = 'H'; // 发送字符H PORTB &= ~(1 << RS485_RTS_PIN); // 发送结束并释放RTS } else { // 接收数据 while((UCSR0A & (1 << RDA0)) == 0); // 等待接收完成 char received_char = UDR0; // 读取接收到的数据 // 处理接收到的数据... } _delay_ms(10); // 适当延时,防止数据冲突 } } ``` 注意这只是一个基础的例子,实际应用中可能还需要处理错误检测、帧校验、地址识别等复杂情况。此外,上述代码假设了硬件上已经配置好电平转换器(如TTL转差分等)。具体的实现可能会因硬件的不同而有所差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值