美文网首页
stm32学习记录

stm32学习记录

作者: sgy1993 | 来源:发表于2019-01-06 21:27 被阅读0次

定时器相关

定时器的时钟来源
这里,定时器的时钟来源有 4 个:
1) 内部时钟(CK_INT)
2) 外部时钟模式 1:外部输入脚(TIx)
3) 外部时钟模式 2:外部触发输入(ETR),芯片手册里面有写
4) 内部触发输入(ITRx):使用 A 定时器作为 B 定时器的预分频器(A 为 B 提供时钟)。

中文参考手册-P254页

上面图里的TIMxCLK是哪里来的,最高时钟72MHZ


中文参考手册80页

软件上谁来控制
TIMx_SMCR 寄存器

源码分析

typedef struct
{
  uint16_t TIM_Prescaler;         
  uint16_t TIM_CounterMode;  
  uint16_t TIM_Period;            
  uint16_t TIM_ClockDivision; 
  uint8_t TIM_RepetitionCounter; 
} TIM_TimeBaseInitTypeDef;       

TIM_Prescaler ------> PSC寄存器

位15:0 PSC[15:0]:预分频器的值 (Prescaler value)
计数器的时钟频率CK_CNT等于fCK_PSC/(PSC[15:0]+1)。
PSC包含了当更新事件产生时装入当前预分频器寄存器的值

所以定时器的时钟频率 = ck_int / (PSC[15:0]+1)


image.png

TIM_CounterMode----------> 计数的方式

TIM_Period--------------------->ARR 重装载寄存器
在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),
从下图中看0也算一个周期,即arr的值如果为1,其实计数了2个定时周期。

TIM_ClockDivision ----------->CKD是对于输入的分频,在输入捕获的时候要用到,相当于滤波

步进电机

42步进电机

蓝A+,红A-,绿B+,黑B-

image.png

时钟相关

RCC_CFGR 来控制APB2,APB1和系统时钟的关系,也就是分频系数怎么确定


image.png

PWM输出

有一个比较寄存器,0-100向上计数,比较寄存器的值是50的话,周期相当于就是100*定时器频率, 占空比通过比较寄存器调整

Systeminit函数进行初始化

PWM输出的框图


图125 捕获/比较通道的输出部分(通道1)
110: PWM模式1- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平(就是高电平),否则为
无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。

111: PWM模式2- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为
有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电
平。
注1:一旦LOCK级别设为3(TIMx_BDTR寄存器中的LOCK位)并且CC1S=’00’(该通道配置成输
出)则该位不能被修改。
注2:在PWM模式1或PWM模式2中,只有当比较结果改变了或在输出比较模式中从冻结模式
切换到PWM模式时, OC1REF电平才改变。

PWM1模式是CNT < CCR1,通道1为有效电平,但是最终输出的电平通过谁来控制呢, CCER.CC1P
CCER:CC1P位:
0: OC1高电平有效
1: OC1低电平有效

如果PWM1模式,CCER:CC1P为0, 当CNT < CCR1时就会输出高电平,CCER:CC1P为1, 当CNT < CCR1时, 输出低电平

PWM怎么设置
    必须通过设置TIMx_CCMRx寄存器的OCxPE位使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位, (在向上计数或中心对称模式中)使能自动重装载的预装载寄存器

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);//开启预装载寄存器
OC1PE: 输出比较1预装载使能 (Output compare 1 preload enable)
0:禁止TIMx_CCR1寄存器的预装载功能,可随时写入TIMx_CCR1寄存器,并且新写入的数
值立即起作用。
1:开启TIMx_CCR1寄存器的预装载功能,读写操作仅对预装载寄存器操作, TIMx_CCR1的
预装载值在更新事件到来时被传送至当前寄存器中。

/*********************************************/
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

PWM对应的gpio是哪一个引脚


image.png

PB5可以复用成定时器3通道2PWM输出引脚


image.png

gpio口应该怎么样配置


image.png
    /*定时器的频率是10KHZ, 计一个数0.1ms, */
    tim3_ch2_pwm_init(4999,7199, 2500);

串口通信

单工:
           数据传输只支持数据在一个方向上传输
半双工:
           允许数据在两个方向上传输,但是,在某一时刻,只允许数
            据在一个方向上传输,它实际上是一种切换方向的单工通信;
全双工:
           允许数据同时在两个方向上传输,因此,全双工通信是两个
           单工通信方式的结合,它要求发送设备和接收设备都有独立
           的接收和发送能力。

同步通信:带时钟同步信号传输。
    -SPI,IIC通信接口
异步通信:不带时钟同步信号。
    -UART(通用异步收发器),单总线

image.png
UART:通用异步收发器
USART:通用同步异步收发器

串口通信的过程


image.png

串口寄存器相关

引脚对应关系


image.png image.png

中断优先级分组

image.png

相关文章

  • STM32学习笔记

    此文用于记录学习STM32中所学习或者巩固的知识,主要围绕但并不局限于STM32。 本次学习并非为了深入了解使用S...

  • 《嵌入式》文集目录

    一、STM32 STM32学习:STM32介绍与学习[https://www.jianshu.com/p/2bca...

  • stm32学习记录

    定时器相关 定时器的时钟来源这里,定时器的时钟来源有 4 个:1) 内部时钟(CK_INT)2) 外部时钟模式 1...

  • 第二十七天

    学习stm32,linux

  • STM单片机学习-day1 认识芯片

    STM单片机学习-day1 认识芯片 STM32单片机 STM32代表了ARM的32位CPU STM32型号说明,...

  • stm32培训教程stm32单片机教程入门到精通C语言教程大全3

    stm32培训教程stm32单片机教程入门到精通C语言教程大全32位开发学习资料零入门自学 STM32是意大利知名...

  • 超声波测距避障小车

    一、导言 通过笔记记录学习过程,不断进步。mcropython系统的STM32开发板控制,HC-SR04超声波测距...

  • 12/12

    今天学习了gpio和stm32的点亮小灯程序,关于stm32的板子芯片内部,了解了一些

  • STM32串口输出DHT11温湿度

    作为学习教材,记录了我在使用STM32采集DHT11温湿度时遇到的问题: 这里有三个学习DHT11的链接:(这里有...

  • 小白学习STM32的心路历程

    小白学习STM32的心理路程 学习步骤 最好学过51单片机之后再学STM32,有基础会好学很多,但没有基础应该也能...

网友评论

      本文标题:stm32学习记录

      本文链接:https://www.haomeiwen.com/subject/dwserqtx.html