推荐阅读最新更新时间:2024-11-10 10:25
STM32之复位和系统时钟
首先明白复位是一个很重要的部分,复部分设计的好坏关系到整个系统的稳定。一般来说,STM32F10系列芯片都具有系统复位,电源复位和备份区域复位。这里分开说明三种复位的基本知识点。 系统复位中,系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器,以下事件中的一件发生都会产生一个复位时钟: 1.NRST管脚上的低电平(外部复位); 2.窗口看门狗计数终止(WWDG复位); 3.独立看门狗记数终止(IWDG复位); 4.软件复位(SW复位); 5.低功耗管理复位。 其他两种复位方式这里不再赘述。 在时钟系统中,以下3种不同的时钟可被用来驱动系统时钟(SYSCLK) 1.HSI振荡器时钟 2.HSE振荡器
[单片机]
stm32 低功耗下使用看门狗(不喂狗)
在项目中需要低功耗处理,而使用看门狗可以保证程序不会跑死。但使用看门狗有一个问题,打开看门狗以后关闭不了,必须一直喂狗进行操作,那有啥好的办法呢?狗是必须养的,养这条狗花费了我半天时间,在此记录。 我能想到的有两种方案: 一、 使用独立看门狗,在低功耗下唤醒进行喂狗操作后继续休眠。 该方法可以通过增大看门狗的时钟分频,最大256分频,即可达到最大限度的喂狗时间,如果按照40K的时钟来算,(1 / (40K / 256)) * 4096 = 26.2144S, 在二十多秒起来喂狗在功耗方面可以接受,这种方法比较简单,不过二十多秒需唤醒一次。 二、利用复位关闭看门狗,在低功耗下不进行喂狗操作 使用的前提是需要判断复
[单片机]
STM32——粗谈通信接口设备
在STM32中,其通信接口共有5个,分别是:用于IC间通信的SPI接口和I2C接口、用于控制局域网通信的CAN 总线接口、与PC通信的 USB接口、还有最常见的通用同步/异步串口USART。下面我们来详细介绍一下这5个通信接口在STM32中分别所起的作用。 1. 用于IC间通信的SPI接口 在STM32中,为了能够与其他 IC进行通信,其配备2个SPI接口,并提供高达18 MHz的全双工SPI通信。在这两个SPI接口上,其中有一个SPI设备接口是位于满速为72 MHz的APB2高速总线上,而另外一个SPI设备接口则是位于满速为36 MHz的APB1低速总线上。用户可以对每个 SPI 设备的时钟极性和相位进行定制,其发送数据
[单片机]
STM32定时器溢出的工作原理是什么?
从来没有一个外设能够这么骚~那说的就是定时器了,或者说没有了定时器的MCU就不完整。 只能说没有定时器的单片机不值得被爱 OKOK,不骚了,这篇文章就是回答几个在我研究过程中比较疑惑的问题。 所以是可以确定一点的就是,如果你想让你的定时器非常精确,那你一定要有一个很稳的时基,这里就是时钟树。 痛苦的回忆来了,具体要查你的定时器在哪里挂着 还想骂的一点是,不知道为什么定时器还排起了辈分按说是从简单到难,但是ARM构架似乎是一把梭哈。 事实上大多数文章都是拿这个图说事情的,我也不能免俗 这个可编程定时器的主要部分是一个带有自动重装载的16位累加计数器,计数器的时钟通过一个预分频器得到。 软件可以读写计数器、自动重装
[单片机]
STM32的PWM实验
1、为啥要学PWM PWM 是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此学习 PWM 具有十分重要的现实意义。 STM32F1 除了基本定时器 TIM6 和 TIM7,其他定时器都可以产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4 路的 PW
[单片机]
深入理解STM32之储存器和总线架构2(基于STM32F411)
本文转载自http://blog.csdn.net/charmingsun/article/details/52295018 官方文档: STM32F411 参考手册 STM32F411 数据手册 Cortex™-M4F 编程手册 STM32 微控制器系统存储器自举模式应用笔记 STM32™ 自举程序中使用的 USART 协议 ARM Cortex™-M Programming Guide to Memory Barrier Instructions 三、Flash接口中的自适应实时存储器加速器 有关 Cortex-M4 处理器三级指令流水线知识的补充: 指令流水线以及相关名词的定义: 指令流水线是为提高处理器
[单片机]
STM32手动创建工程-HAL库,超详细
自从ST公司推出了STM32CubeMX软件,使得开发者开发成本和时间大大缩小,通过这款软件,用户可以选择芯片和配置时钟、外设等等,可以直接生成工程代码,虽然功能逻辑还是要自己补充,但是已经省去原来工程创建和繁琐的外设配置。 但是对于初学者要懂得手动创建一个完整的工程,有利于加深对工程目录结构和各类驱动文件的理解,本文将带领读者手动创建基于HAL库的STM32工程项目。 1.新建本地工程文件夹 电脑本地新建“Template_HAL”文件夹,在该文件夹下新建5个文件夹,如下图所示 2.添加HAL库 将HAL库添加到工程文件夹中,HAL库下载和说明我在另外一篇文章中有详细介绍。 3.新建工程 打开Keil-MDK,新
[单片机]
STM32串口超时判断方式接收未知长度数据
usart.c串口中断处理函数: void USART1_IRQHandler(void) { u8 res; if(USART1- SR&(1 5))//接收到数据 { res=USART1- DR; if(USART1_Recv_Len USART1_MAX_RECV_LEN) //还可以接收数据 { TIM3- CNT=0; //计数器清空 if(Rec_Over_Flag==0)TIM3_Set(1); //使能定时器4的中断 USART1_RX_BUF =res; //记录接收到的值 }else { Rec_Over_Flag=1; //强制标记接收完成 }
[单片机]