stm32学习总结
xkf321
这个作者很懒,什么都没留下…
展开
-
STM32-通用定时器基本定时功能
1. STM32的Timer简介STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。定时器计数器分辨率计数器类型预分频系数产生DMA转载 2016-11-08 20:23:46 · 552 阅读 · 0 评论 -
TIM_ARRPreloadConfig
先说TIM_ARRPreloadConfig设置为DISABLE 和ENABLE的问题,他的作用只是允许或禁止在定时器工作时向ARR的缓冲器中写入新值,以便在更新事件发生时载入覆盖以前的值。在开始初始化的时候你已经把" TIM_TimeBaseStructure.TIM_Period=2000; //ARR的值 ",后来也一直是这个值,原因是你没有编写中断服务函数或者你在中断服务函数中根本就转载 2016-11-09 20:30:15 · 14213 阅读 · 1 评论 -
STM32中的位带(bit-band)操作
支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在 CM3 中,有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围,第二个则是片内外设区的最低 1MB范围。这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。转载 2016-10-26 10:19:47 · 425 阅读 · 0 评论 -
TIM通用定时器(三):PWM输入捕获模式
一、概念理解PWM输入捕获模式是输入捕获模式的特例,自己理解如下1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1 IC2一组,IC3 IC4一组。并且可是设置管脚和寄存器的对应关系。2. 同一个TIx输入映射了两个ICx信号。3. 这两个ICx信号分别在相反的极性边沿有效。4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。转载 2016-11-12 17:31:10 · 2731 阅读 · 1 评论 -
捕获多路pwm输入3种方法
stm32f3捕获多路pwm输入1.定时器有捕获 PWM 的功能. 这个方式用起来最简单, 但是一个定时器只能捕获一路.2.只用定时器双边沿捕获功能, 发生捕获时产生中断, 在中断里识别上升下降沿. 从而计算出 PWM 的频率和占空比, 这样一个定时器最多可捕获4路.3. 用 IO 口双边沿触发中断, 在中断里读取定时器的值. 这样一个定时器可以测量任意个 PWM 信号.对比: 1转载 2016-11-12 17:38:26 · 4636 阅读 · 0 评论 -
PWM输入捕获模式
一、概念理解PWM输入捕获模式是输入捕获模式的特例,自己理解如下1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1 IC2一组,IC3 IC4一组。并且可以设置管脚和寄存器的对应关系。2. 同一个TIx输入映射了两个ICx信号。3. 这两个ICx信号分别在相反的极性边沿有效。4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。转载 2016-11-12 17:40:24 · 1975 阅读 · 0 评论 -
STM32 控制74HC595 驱动点阵 文字能移动
遇到了很奇怪的问题,程序明明没错但就是不显示,最后把在main函数中定义的变量count移动到main 外面就正常了 。仿真后发现,在main 函数中定义的局部变量 初始值不为0 ,超出控制范围 , 导致程序跑飞。按理说keil 定义变量默认初始化为0才对 。最后将定义count初始化为0,程序正常运行。下次定义变量一定要初始化啊!!!在单步调试中,发现这个问题。不得不说一下,keil 在线仿原创 2017-02-23 20:33:25 · 6434 阅读 · 2 评论 -
为什么I2C从机地址要左移一位
对许多刚开始接触I2C的新手来说,最开始比较疑惑,当MCU做主机与一些I2C接口的从机(比如一些数字传感器,大多数仍为I2C接口)通信时,无论是用IO模拟I2C协议还是使用I2C模块,在发送从机地址时为什么都需要将从机手册的I2C地址左移一位发出去呢?当然这个问题是比较初级的了,高手直接略过,新手权且简单看一看作为学习资料吧。 首先以飞思卡尔Kinetis系列为例(咳咳,好多人估计都快吐转载 2017-02-23 20:37:54 · 14980 阅读 · 0 评论 -
__I、 __O 、__IO volatile是什么?怎么用?(作者写的太棒了,给赞) .
__I、 __O 、__IO是什么意思? 这是ST库里面的宏定义,定义如下:#define __I volatile const /*!#define __O volatile /*!#define __IO volatile /*!显然,这三个宏定义都是用来替换成 volatile 和 const 的,所以我们先要了解 这两个关键字的作用: volatil转载 2017-04-28 15:50:56 · 360 阅读 · 0 评论