自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 32 窗口看门狗_15

因此,用该位来设置中断,当窗口看门狗的计数器值减到 0X40 的时候,如果该位设置,并开启了中断,则会产生中断,在中断里向WWDG_CR重新写入计数器的值,来达到喂狗的目的。WWDG_CR 只有低八位有效,T[6:0]存储看门狗的计数器值,(最大0x7F) 随时更新,每个窗口看门狗计数周期(4096×2^ WDGTB)减 1。),该寄存器用来记录当前是否有提前唤醒的标志。在最后编写窗口看门狗的中断服务函数,通过该函数来喂狗,喂狗要快,否则当窗口看门狗计数器值减到 0X3F 的时候,就会引起软复位。

2023-09-30 20:05:59 85

原创 32 独立看门狗_14

独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。独立看门狗的时钟是内部 RC 时钟,不是准确的 40Khz,是在 30~60Khz之间的可变化的时钟,估算的40Khz 的频率。单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用是在一定时间内通过定时计数器实现没有接收喂狗信号 (表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号)。

2023-09-29 23:59:22 55 1

原创 32 外部中断实验_13

第三个参数是触发方式,可以是下降沿触发 EXTI_Trigger_Falling,上升沿触发 EXTI_Trigger_Rising,或者任意电平(上升沿和下降沿)触发 EXTI_Trigger_Rising_Falling,最后一个参数是使能中断线。中断线 0-4 每个中断线对应一个中断函数,中断线 5-9 共用中断函数 EXTI9_5_IRQHandler,中 断线 10-15 共用中断函数 EXTI15_10_IRQHandler。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。

2023-09-29 13:20:07 225 1

原创 32 串口通信实验_12

当接收到从电脑发过来的数据,把接收到的数据保存在 USART_RX_BUF 中,同时在接收 状态寄存器(USART_RX_STA)中计数接收到的有效数据个数,当收到回车(回车的表示由 2 个字节组成:0X0D 和 0X0A)的第一个字节 0X0D 时,计数器将不再增加,等待 0X0A 的到来, 而如果 0X0A 没有来到,则认为这次接收失败,重新开始下一次接收。USART_RX_BUF 的大小由 USART_REC_LEN 定义,也就是一次接收的数据最大不能超过 USART_REC_LEN 个字节。

2023-09-24 20:35:40 66 1

原创 32 串口通信原理和函数配置_11

处理器与外部设备通信方式:并行通信(多位数据同时传,速度快,占引脚资源多)与串行通信(数据按位传,占引脚资源少,速度慢)串行通信按照数据的传输方向:单工:数据只支持在一个方向传输半双工:数据可以在两个方向传输,但某一时刻只能在一个方向上传输全双工:数据可以同时在两个方向上传输,两个单工通信方式的结合同步通信:带时钟同步信号传输。SPI,IIC通信接口异步通信:不带时钟同步信号。

2023-09-23 12:31:01 227

原创 32 NVIC 中断优先级管理_10

但是 STM32F103 的可屏蔽中断只有 60 个,所以对我们来说,有用的只有ISER[0]和 ISER[1], 总共可以表示 64 个中断,实际对应关系ISER[0]的bit0~bit31分别对应中断 0~31,ISER[1]的 bit0~27 对应中断 32~59;结合实例:假定设置中断优先级组为 2,然后设置中断 3(RTC 中断)的抢占优先级为 2,响应优先级为 1。例如组设置为 3,那么此时所有的 60 个中断,每个中断的中断优先寄存器的高四位中的最高3位是抢占优先级,低1位是响应优先级。

2023-09-22 13:49:41 38 1

原创 32端口复用和重映射_09

为了让硬件工程师可以更好地安排引脚的走向和功能,在 STM32 中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把有复用功能外设引脚映射到其它的端口。也就是说,一个 GPIO 如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。上图是截取的中文参考手册中的重映射表,从表中可以看出,默认情况下,串口 1 复用的时候引脚位 PA9,PA10,同时我们可以将 TX 和 RX 重新映射到管脚 PB6 和 PB7 上面去。

2023-09-21 00:33:11 176

原创 32MDK 下 C 语言基础_08

在单片机程序开发过程中,经常会遇到要初始化一个外设比如串口,它的初始化状态是由几个属性来决定的,比如串口号,波特率,极性,以及模式等,可以将相关的属性封装成一个结构体,与属性相关的功能行为封装成函数。1.1不改变其他位的值的状况下,对某几个位进行设值。typedef 用于为现有类型创建一个新的名字,或称为类型别名,用来简化变量的定义。define 是 C 语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。这样的作法设置第 0位为 0,但是这样的作法同样不好看,并且可读性很差。

2023-09-20 22:21:03 47 1

原创 32Systick定时器_07

CM3 内核的处理器,内部包含了一个 SysTick 定时器,SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。SysTick 的时钟源自 HCLK 的 8 分频,假设我们外部晶振为 8M, 然后倍频到 72M,那么 SysTick 的时钟即为 9Mhz,也就是 SysTick 的计数器 VAL 每减 1,就代表时间过了 1/9us。对于STM32,外部时钟源是 HCLK(AHB总线时钟)的1/8内核时钟是 HCLK时钟。

2023-09-20 20:52:13 30 1

原创 32时钟系统&&Systeminit函数_06

STM32 系统复杂,外设非常多,并不是所有外设都需要系统时钟的高频率,比如看门狗以及 RTC 只需要几十k的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以较为复杂的 MCU一般都是采取多时钟源。

2023-09-20 17:44:59 41 1

原创 32按键输入实验&&位带操作_05

位带操作简单的说,就是把每个寄存器的位膨胀为一个 32位的字节地址,当访问这些字节地址的时候就达到了访问位的目的,比如说ODR 寄存器有 32 个位,映射到 32 个地址上,访问这 32 个地址就达到访问 32 个比特的目的。比如调用 PAout(1)=1,实际是设置了 GPIOA.1对应的寄存器ODR 的位,定义中可以跟踪过去看到是通过计算访问了一个地址(即ODR寄存器的地址)。这里将 STM32F1 的 IO 口作为输入,利用板载的 3 个按键,来控制板载的两个LED的亮灭和蜂鸣器的开关;

2023-09-20 15:58:40 63 1

原创 32MDK 中寄存器地址名称映射分析_04

以GPIOA为例,GPIOA 的 7 个寄存器都是 32 位的,所以每个寄存器占有 4 个字节地址,一共占用 28 个字节地址,地址偏移范围为(000h~01Bh),地址偏移是相对 GPIOA 的基地址而言的。GPIO_TypeDef 的定义的成员变量的顺序和 GPIOx 寄存器地址映像的顺序是一致的,如果不一致,就会导致地址混乱。结构体存储的成员地址是连续的,GPIO_TypeDef是结构体,所以就知道各成员变量对应的地址。结构体成员变量的引用方法是: 结构体变量名字.成员名。

2023-09-20 10:41:21 56 1

原创 32蜂鸣器实验_03

图中我们用 NPN 三极管(S8050)来驱动蜂鸣器,R33 主要用于防止蜂鸣器的误发声。当 PB.8 输出高电平的时候,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声;LED0与PB5引脚相连,低电平有效;代码使用了位带操作。

2023-09-19 18:47:54 51

原创 32GPIO库函数_02

STM32基础-GPIO库函数

2023-03-09 19:33:28 408

原创 32GPIO的八种工作模式_01

STM32基础-GPIO的八种工作模式

2023-03-06 23:05:29 947

原创 AD 软件pcb库笔记

pcb库创建封装

2023-01-31 23:01:01 252

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除