STM32培训第四次课
STM32F0 培训, 内核篇
1-240 + NMI 8-256
8/4/0, 2/1/0 Yes (Option) Yes (Option)
No Yes Yes Yes Yes Yes Yes (Option) AHB Lite, APB Yes
Cortex-M系列各处理器的指令兼容性
Cortex-M0
V6M Thumb, Thumb-2 System Instructions
0.84 1
Yes 1-32 + NMI
4 4/2/0, 2/1/0
No No No Yes (Option) No Yes No No No AHB Lite Yes
Cortex-M3
v7M Thumb + Thumb-2
STM32F0 培训
2014年4月 上海
STM32F0片上资源一览
STM32F0
模拟外设
ADC
DAC
CMP
计数器
TIM
WDG
RTC
通信端口
SPI I2C USART
功能外设
TSC CRC CEC
基础、共用模块
Archi、Flash、PWR、RCC、EXTI、GPIO、DMA
内核 Core
2
Cortex-M0内核
Cortex-M系列的软件兼容性(1)
• 向上路径(M0->M3->M4)的移植直接了当
• Cortex-Mx内核的指令集是Cortex-My内核(x<y)指令集 的子集。软件可以直接移植过去,性能则随着MCU时 钟频率的提高以及冯诺依曼到哈佛架构的改进而得到 提升
• 推荐对代码进行重新编译 • 从M0内核升级到M3内核:重新编译可以充分利 用更高效的指令,比如硬件除法 • 从M0/M3内核升级到带FPU的M4内核:某些代码 需要使用intrinsic重新编写,以利用M4内核高级 的DSP/SIMD指令
《STM32入门100步》第4期:STM32内部重要功能(洋桃电子版)201712
STM32入门100步系列教学文章STM32内部重要功能全记录杜洋洋桃电子上一期我们讲了内核、存储器和时钟,它们都是单片机核心功能的一部分,没有它们中的任何一个,单片机都不能正常工作。
而核心功能还包括复位和电源管理两个部分,因为篇幅关系没有写完,这一期把它们补上。
同时我还要继续介绍单片机的多个重要功能。
之所以说“重要”,是因为单片机如果没有这些功能,虽然可以正常工作,但其性能和所发挥的作用会大大减弱。
重要功能包括:低功耗模式、ADC、DMA、I/O端口、调试模式、定时器、看门狗定时器和嘀嗒定时器。
因为我们现在是做入门的介绍,一开始不能讲得太深、太复杂,对于每个功能,我只介绍其表面上的功能与原理。
大家只要看过,有一个基本的印象即可。
待日后讲到编程设计时再深入讲解,你便会有温故知新的感觉。
【复位】复位功能是核心功能的一部分,大到PC,小到单片机,每一台计算机系统都有。
在我小时候,台式机的机箱上会有一个独立的复位按钮。
随着PC 越来越高级和稳定,复位按钮渐渐被取消了,但在主板上还是有复位电路的。
单片机上的复位功能也有着类似的变化,在我学习单片机时,需要在单片机的一个复位专用引脚上接一个由电阻和电容组成的复位电路。
如果没有这个电路,单片机就没法工作。
近些年来的新款单片机都把复位功能内置到单片机中,用户甚至可以忽略复位这件事了。
如果有必要,你可以在复位引脚上接一个按键用来手动复位,除此之外不需其他操作。
复位功能的作用是让RAM 中的数据清空,让所有连接到复位的相关功能都回到刚开始工作的(初始)状态。
在接通电源之前,单片机里的存储器及其他功能的状态是混乱、不稳定的。
如果上电后不复位,所有功能都处在无序状态,就好像军队集合时没有立正、稍息、向右看齐,直接齐步走的结果就是乱成一片。
复位的作用就是让单片机内部秩序化,都回到设计者规定好的状态。
这个状态为用户程序的运行做了充分的准备,就像计算机每次重启一样。
在STM32 单片机中,有一个供电监控器,这个监控器是一直工作的,它能监测外部电源的电压,当电压低于2V 时,监控器会让单片机复位。
STM32讲义4-Keil
3、CMSIS与固件库中的基本数据类型
4.2.2 固件库命名规则
一、源程序文件、头文件命名规则
以“stm32f10x_” 开头 例如:stm32f10x_gpio.h
二、外设函数命名规则
以外设的缩写字母大写加下划线开头。只能用1个 下划线。
例如:GPIO_Init
General Purpose Input Output (通用输入/输出)简称为 GPIO,或总线扩展器。
使能或者关闭外设PPP
PPP_ITConfig
使能或者关闭外设PPP某中断源
PPP_DMAConfig
使能或者关闭PPP的DMA接口
PPP_GetFlagStatus
检查外设PPP某标志位是否被设置
PPP_ClearFlag
清除外设PPP标志位
PPP_GetITStatus
判断来自外设PPP的中断发生与否
//Read Only //Read Only //Read Only
typedef __IO int32_t vs32; typedef __IO int16_t vs16; typedef __IO int8_t vs8;
Core_cm3.c和Core_cm3.h,CM3核的全局变量声明和 定义,用于访问CM3内核及其设备
system_<device>.h和system_<device>.c (system_stm32.h和system_stm32.c),芯片厂商定义 的系统初始化函数及时钟变量
小马哥旧版stm32四轴学习课程链接
链接
/courses/1308 /courses/1338 /courses/1336 /courses/1337 /courses/1339 /courses/1341 /courses/1343 /courses/1365 /courses/1385 /courses/1404 /courses/1405 /courses/1406 /courses/1413 /courses/1462 /courses/1463 /courses/1464 /courses/1465 /courses/1379 /courses/1504 /courses/1505 /courses/1511 /courses/1323 /courses/1440 /courses/1444 /courses/1448 /courses/1461 /courses/1485 /courses/1507 /courses/1508 /courses/1528 /s/1pLPiIAR 密码:unx2 /s/1mhZOH6K 密码:68vh 群1:419203944,群2:604047647,群3:560572155 id:1097057461 https://
课程名称
原理图讲解 四轴软件知识体系梳理 软件入门一 软件入门二 软件入门三 软件进阶一I2C协议,数据通讯时序讲解 软件进阶二I2C协议软件实现 中断系统 MPU6050原理讲解 MPU6050原始数据获取 MPU6050 官方DMP库的移植 MPU6050获取姿态角的代码实现 MPU6050姿态角的使用 SPI配置与数据通讯 无线NRF24L01数据收发一 无线NRF24L01数据收发二 四轴与遥控器通讯协议 PID控制理论知识准备 四轴系统分析及其PID算法讲解 四轴PID算法的代码实现 四轴PID控制算法的参数整定及其方法 基于stm32的霍尔编码器直流电机闭环PID控制的实质性原理解读 小马哥STC51四轴项目动员会 基于ST系列MCU的嵌入式项目快捷开发 小马哥STC51四轴项目系列内部课程第一讲-项目需求与任务分配 STC51项目原理图审核、讲解 小马哥教你如何利用一个IO控制上千单总线全彩LED驱动 基于STM32F103的幻彩灯驱动程序编写 基于51的幻彩灯驱动程序编写 基于STM8S003F3的幻彩灯驱动程序编写 四轴散件焊接调试视频 手柄散件焊接调试教程 四轴相关技术讨论QQ 美拍四轴焊接直播 四轴PCB板及成品官方唯一淘宝店地址
STM32入门教程
中断程序
断点
断点
STM32中断
• 68个可屏蔽中断通道,
包含EXTI、TIM、ADC、
USART、SPI、I2C、
RTC等多个外设
• 使用NVIC统一管理中
断,每个中断通道都
拥有16个可编程的优
先等级,可对优先级
进行分组,进一步设
置抢占优先级和响应
优先级
NVIC基本结构
内核
EXTI
n
NVIC
优先级0
模拟通信协议输出时序等
• 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外
接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
GPIO基本结构
PA0
GPIOA
PA2
……
驱
动
器
……
寄
存
器
……
PA1
PB0
GPIOB
PB2
……
驱
动
器
……
寄
存
器
……
PB1
PB15
……
APB2
PA15
GPIO位结构
序中经常出现的参数,便于快速修改
• 定义宏定义:
#define ABC 12345
• 引用宏定义:
int a = ABC; //等效于int a = 12345;
C语言typedef
• 关键字:typedef
• 用途:将一个比较长的变量类型名换个名字,便于使用
• 定义typedef:
typedef unsigned char uint8_t;
电源控制
EXTI
外部中断
BKP
备份寄存器
TIM
STM32-深入浅出(新手必看)
STM32-深入浅出(新手必看)STM32学前班教程之一:为什么是它经过几天的学习,基本掌握了STM32的调试环境和一些基本知识。
想拿出来与大家共享,笨教程本着最大限度简化删减STM32入门的过程的思想,会把我的整个入门前的工作推荐给大家。
就算是给网上的众多教程、笔记的一种补充吧,所以叫学前班教程。
其中涉及产品一律隐去来源和品牌,以防广告之嫌。
全部汉字内容为个人笔记。
所有相关参考资料也全部列出。
:lol教程会分几篇,因为太长啦。
今天先来说说为什么是它——我选择STM32的原因。
我对未来的规划是以功能性为主的,在功能和面积之间做以平衡是我的首要选择,而把运算放在第二位,这根我的专业有关系。
里面的运算其实并不复杂,在入门阶段想尽量减少所接触的东西。
不过说实话,对DSP的外设并和开发环境不满意,这是为什么STM32一出就转向的原因。
下面是我自己做过的两块DSP28的全功能最小系统板,在做这两块板子的过程中发现要想尽力缩小DSP的面积实在不容易(目前只能达到50mm×45mm,这还是没有其他器件的情况下),尤其是双电源的供电方式和1.9V的电源让人很头疼。
后来因为一个项目,接触了LPC2148并做了一块板子,发现小型的ARM7在外设够用的情况下其实很不错,于是开始搜集相关芯片资料,也同时对小面积的AVR和51都进行了大致的比较,这个时候发现了CortexM3的STM32,比2148拥有更丰富和灵活的外设,性能几乎是2148两倍(按照MIPS值计算)。
正好2148我还没上手,就直接转了这款STM32F103。
与2811相比较(核心1.8V供电情况下),135MHz×1MIPS。
现在用STM32F103,72MHz×1.25MIPS,性能是DSP的66%,STM32F103R型(64管脚)芯片面积只有2811的51%,STM32F103C型(48管脚)面积是2811的25%,最大功耗是DSP的20%,单片价格是DSP的30%。
STM32学习方法
stm32 入门系列教程如何提高stm32的学习效率(2010-04-08) 目录第一章笔者的入门总结............................................................... . (2)1 为什么要把时间花在“犹豫”上? (2)2 看资料需要计划、耐心和速度............................................................... . (2)3 学stm32必备开发板............................................................... (3)1.4 熟悉开发板并试图写程序..............................................................................3第二章入门方法谈............................................................... . (4)1 拿到开发板我该做什么?..............................................................................4+1 我的时间如何安排............................................................... (5)2.3 碰到问题怎么办?............................................................................ ..............5第三章学习步骤............................................................... .. (6)1 关于stm32文档学习............................................................... (6)3.2 30天上手stm32计划............................................................... (7)1 第1步:熟悉调试软件............................................................... . (8)1 第2步:gpio编程............................................................... (8)2 开始全新的stm32深入研究..............................................................9福州芯达工作室简介............................................................... . (9)第一章笔者的入门总结每当我们在入门之前(arm是这样,dsp也一样),总会会有很多疑问,会有很多顾虑。
STM32F4学习笔记之EXTI中断(使用固件库)
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);
EXTI_InitStructure.EXTI_Line = EXTI_Line13;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
批注本地保存成功开通会员云端永久保存去开通
1.使能SYSSCFG和对应GPIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
2.配置对应GPIO为输入模式
NVIC_InitStructure.NVIC_IRQChannelSubPriority = xx;
《振南电子STM32视频教程》课时讲解介绍
《振南电子STM32视频教程》课时讲解介绍
《振南电子STM32视频教程》共14讲,本文详细讲解:每个课时的主要内容。
学习本套视频教程请复制以下链接到地址栏查看:
http:///emb/arm/20161009440169l
-------------------------------------------------------------------------------------------
●●●【第一讲】ARM处理器和STM32微控制器(37分钟)
(1) ARM处理器家族
-----ARM7系列介绍
-----ARM9系列介绍
-----ARM10和ARM11系列介绍
-----ARM Cortex系列介绍
(2)ARM Cortex-M3的应用介绍
(3)STM32微控制器
-----特征和资源讲解
-----管脚的配置灵活性讲解(即管脚的重映射功能)
-----微控制器功能框图讲解
(4)开发工具IAR EWARM介绍
(5)STM32微控制器最小系统
-----电源电路讲解(芯片电源功能块及开发板电源电路设计讲解)
-----时钟电路讲解(芯片时钟树及开发板时钟电路设计讲解)
-----复位电路讲解(芯片复位功能块及开发板手动和上电复位电路设计讲解)
-----启动配置电路讲解(芯片启动模式的讲解)
-----调试电路讲解(调试电路接口设计和所需仿真器讲解)
(6)STM32微控制器的应用领域介绍。
STM32F0 培训, 内核篇
2014年4月 上海
STM32F0片上资源一览
STM32F0
模拟外设
ADC
DAC
CMP
计数器
TIM
WDG
RTC
通信端口
SPI I2C USART
功能外设
TSC CRC CEC
基础、共用模块
Archi、Flash、PWR、RCC、EXTI、GPIO、DMA
内核 Core
2
Cortex-M0内核
• 微处理器架构
• 带跳转预测的3级流水线 • 1条 AHB-Lite总线接口
• 可配置的超低功耗模式
• 深度睡眠、唤醒中断控制器
• 针对广泛应用的灵活配置
• 可配置的中断控制器(带优先级的最多32个中断) • 不带内存保护单元MPU • 可选的调试&跟踪功能
M0 – 低成本的Cortex-M处理器
Cortex-M系列处理器
• 跨越传统单片机8/16/32位的界限 • 跨越所用应用的无缝架构 • 每个产品都针对超低功耗做了优化,且易于使用
Cortex-M0 Cortex-M3 Cortex-M4
“8/16-bit” applications
“16/32-bit” applications
“32-bit/DSC” applications
以访问处理器所有资源 • 不支持位带操作 • 不支持非对齐数据传输
14
• 所有寄存器都是32位 • 通用寄存器 R0 ~ R12 • 堆栈寄存器 R13(SP)
• 线程模式下,CONTROL[1]指 明使用哪个堆栈 • 0,主堆栈指针(MSP) 上电处理器从地址0处装载MSP • 1,处理器堆栈指针(PSP)
STM32F2技术培训_数字音频接口_I2S
I2S协议简介
I2S是Philips为数字音频设备之间的音频数据传输 而制定的一种总线标准 主 / 从设备模式
主设备:提供并控制CK和CS信号;可收/发/第三方 从设备:收/发数据
CK
数据信号线
CK:串行时钟 SD:串行数据
分时复用的数据通道
WS:字段(声道)选择 MCK:主时钟(系统时钟)
2
培训内容 – I2S模块
I2S协议简介
STM32F2的I2S模块GPIO占用和配置 STM32F2的I2S模块支持多种数据格式 STM32F2的I2S模块支持多种音频标准
主I2S的时钟配置
I2S模块时钟源 主设备的时钟配置和产生
Байду номын сангаас
主/从设备的配置和操作 STM32F2上SPI模式和I2S模式的切换 DMA特性 状态、错误标志以及中断管理
16位数据,16位帧长度
16位数据,32位帧长度
15
培训内容 – I2S模块
I2S协议简介
STM32F2的I2S模块GPIO占用和配置 STM32F2的I2S模块支持多种数据格式 STM32F2的I2S模块支持多种音频标准
主I2S的时钟配置
I2S模块时钟源 主设备的时钟配置和产生
只有CK引脚输出:
I2SCLK / (2*I2SDIV + ODD) = 2 *32 *FS’
同样配置下,FS’是FS的4倍
是主时钟使能时CK输出的4倍 和主时钟使能时MCK输出一样
CHLEN =1 (32位帧长度)
19
时钟配置举例
20
培训内容 – I2S模块
I2S协议简介
STM32F4学习笔记(基础介绍篇)
STM32F4学习笔记(基础介绍篇)这⾥我们学习的开发板芯⽚具体型号是STM32F407ZGT6,采⽤⼯作频率为168 MHz的Cortex™-M4内核,性能较强。
本篇包含的内容:1. 固件库简介2. 开发环境的简介3. 开发板的基础知识⼀、固件库的介绍:前⾔: 在51单⽚机中,我们经常是直接操作 寄存器:P0=0x11; //通过16进制数赋值0,1直接设置寄存器每⼀位开启关闭在STM32中,⾯对⼤量的寄存器,很难全部记住并通过直接赋值来操作,开发效率太低且维护起来很⿇烦,于是可以通过函数的⽅式将对寄存器的操作封装起来,我们⼤多数时候只需要使⽤函数调⽤接⼝(API):/**库函数控制电平的翻转*void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)*{* GPIO->BSRRL = GPIO_Pin; //实际上还是控制寄存器,可以⾃⾏查询源码*}*///我们控制BSRRL寄存器实现电平控制只需要如下操作:GPIO_SetBits(GPIOF,GPIO_Pin_10); //LED1对应引脚GPIOF.10,拉⾼电平表⽰灯灭CMSIS标准:上⾯我们得知,固件库的存在实际上在⼀定程度上使得硬件与软件相分离,如果对于不同的硬件我们都使⽤同⼀个标准(⽐如,规范统⼀的命名,相同的结构层次)就能够实现较好的软件可移植性或者实现较好的兼容性。
arm公司为实现不同芯⽚公司⽣产的Cortex-M4芯⽚软件上的兼容,提出了CMSIS标准(Cortex Microcontroller Software Interface Standard)。
可以简单理解为为了实现接⼝的规范统⼀。
以后我们还会知道其他如HAL、LL库等的使⽤,基本概念原理是⼀样的,此处不做讲解。
STM32官⽅固件库讲解:在⼀个⼯程中,固件库之间的相互关系如下图:1、Application.c:也就是main.c,程序的主逻辑⽂件。
第四章 STM32F4开发基础知识入门-正点原子探索者STM32F4开发板-STM32F4开发指南-库函数
第四章STM32F4开发基础知识入门这一章,我们将着重STM32开发的一些基础知识,让大家对STM32开发有一个初步的了解,为后面STM32的学习做一个铺垫,方便后面的学习。
这一章的内容大家第一次看的时候可以只了解一个大概,后面需要用到这方面的知识的时候再回过头来仔细看看。
这章我们分7个小结,·4.1 MDK下C语言基础复习·4.2 STM32F4系统架构·4.3 STM32F4时钟系统·4.4 IO引脚复用器和映射·4.5 STM32F4 NVIC中断优先级管理·4.6 MDK中寄存器地址名称映射分析·4.7 MDK固件库快速开发技巧4.1 MDK下C语言基础复习这一节我们主要讲解一下C语言基础知识。
C语言知识博大精深,也不是我们三言两语能讲解清楚,同时我们相信学STM32F4这种级别MCU的用户,C语言基础应该都是没问题的。
我们这里主要是简单的复习一下几个C语言基础知识点,引导那些C语言基础知识不是很扎实的用户能够快速开发STM32程序。
同时希望这些用户能够多去复习一下C语言基础知识,C语言毕竟是单片机开发中的必备基础知识。
对于C语言基础比较扎实的用户,这部分知识可以忽略不看。
4.1.1 位操作C语言位操作相信学过C语言的人都不陌生了,简而言之,就是对基本类型变量可以在位级别进行操作。
这节的内容很多朋友都应该很熟练了,我这里也就点到为止,不深入探讨。
下面我们先讲解几种位操作符,然后讲解位操作使用技巧。
C表4.1.1 16种位操作这些与或非,取反,异或,右移,左移这些到底怎么回事,这里我们就不多做详细,相信大家学C语言的时候都学习过了。
如果不懂的话,可以百度一下,非常多的知识讲解这些操作符。
下面我们想着重讲解位操作在单片机开发中的一些实用技巧。
1)不改变其他位的值的状况下,对某几个位进行设值。
这个场景单片机开发中经常使用,方法就是先对需要设置的位用&操作符进行清零操作,然后用|操作符设值。
《STM32实战通关(初级篇)》电子教案 单元4
• 4. 1 ADC单通道采集实验 • 4. 2 ADC的多通道采集实验 • 4. 3常用固件库函数 • 4. 4项目4:图形电量指示器的设计
返回
4. 1 ADC单通道采集实验
• 4.1.1原理介绍
• ADC是一种逐次逼近型模拟/数字转换器。实验平台上共扩展了4个 ADC外部测量电路,用来测量外接电位器调节电压值,如图4. 1所示。
• 在TFTLCD显示端,具体要求如下。 • (1)当电量<2. 5 V时,显示一格电量,且标示为红色。同时,LC D提
示:“电压过低,请充电!”。 • (2)当2. 5 V<电量<2. 7 V时,显示两格电,且标示为绿色。
下一页 返回
4. 4项目4:图形电量指示器的设计
• (3)当2. 7 V<电量<3V时,显示三格电,且标示为绿色。 • (4)当3V<电量<3. 3 V时,显示四格电,且标示为绿色。 • (5)不管电压为多少,当按下KEY1键后,可以显示出当前电压值,精
• 若选择3. 3V供电、12位分辨率、规则组,则ADC采样值(ADC_ DR)与实际电压(Voltage)之间存在正比线性关系,即
• ADC的时钟ADCCLK来源于APB2,经过2/4/6/8分频最终得出。
上一页 下一页 返回
4. 1 ADC单通道采集实验
• 假设系统的时钟总线SYSCLK为168 MHz,经过2分频得到APB2为 84MHz, ADCCLK采用2分频即可得到42MHz。 ADC的采样时间为:
4. 4项目4:图形电量指示器的设计
• 4. 4. 1方案设计
• 利用ADC1_ CH5设计一个LCD图形刻度显示电量指示器。ADC1_ CH5与外接电位器相连,如图4. 1所示。在“项目2:满意度评价器的 设计”中使用了LC D 1602作为显示器。但该模块只能显示单色内容, 不能显示彩色内容。本项目建议使用TFTLCD彩色模块作为显示器。 读者可根据需要选购合适的显示器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式协会第四次课
目录
1. 回顾上节课的知识 2. 按键输入 3. PWM讲解
上节课内容回顾
点亮一个led的步骤
1. 使能IO时钟RCC_APB2PeriphClockCmd(); 2. 声明GPIO的结构: GPIO_InitTypeDef GPIO_InitStructure 3. 为变量GPIO_InitStructure的成员赋值 GPIO_InitStructure.GPIO_Pin =; GPIO_InitStructure.GPIO_Speed =; GPIO_InitStructure.GPIO_Mode =; 4. 调用函数GPIO_Init()来初始化外设GPIO GPIO_Init();
u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) u16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
定时器讲解
stm32配备了2个高级定时器TIM1和TIM8,4个通用定时器 TIM2,TIM3,TIM4和TIM5,还有两个基本定时器TIM6和TIM7。 高级定时器常用于电机控制,因为其加入了死区控制,紧 急制动,定时器同步等高级特性。基本定时器可以为数模 转化器提供准确的时间基准。
按键输入编程步骤
按键控制点亮一个LED的步骤
1. 2.
3.
4.
使能IO时钟RCC_APB2PeriphClockCmd(); 声明GPIO的结构: GPIO_InitTypeDef GPIO_InitStructure 为变量GPIO_InitStructure的成员赋值 GPIO_InitStructure.GPIO_Pin =; GPIO_InitStructure.GPIO_Mode =; GPIO_InitStructure.GPIO_Speed=; 调用函数GPIO_Init()来初始化外输出的IO口引脚:GPIO_Init(); GPIO_InitStructure.GPIO_Pin =; GPIO_InitStructure.GPIO_Mode =; 调用函数GPIO_Init()来初始化外输入的IO口引脚:GPIO_Init() 调用库函数读取引脚值或端口值
定时器讲解
通用定时器的都有4个独立通道(TIMx_CH1~4),这些通道 可以用来作为: 输入捕获 输出比较 PWM生成 单脉冲模式输出 时基单元核心部件是一个16位分频器,通过对定时器时钟 的分频实现确定时间基准的功能。
定时器的库函数操作
通用定时器有4个通道,每个通道都有6种工作模式:
TIM_OCMODE定义 TIM_OCMode TIM_OCMODE_Timging TIM_OCMODE_Active TIM_OCMODE_Inactive TIM_OCMODE_Toggle TIM_OCMODE_PWM1 TIM_OCMODE_PWM2 描述 TIM输出比较时间模式,中断时管 脚无变化 TIM输出比较时间模式,中断时管 脚强制为有效电平 TIM输出比较时间模式,中断时管 脚强制为无效电平 TIM输出比较时间模式,中断时管 脚状态翻转,高变低,低变高 TIM脉冲宽度调制模式1 TIM脉冲宽度调制模式2
上节课内容回顾
怎么读IO引脚的值
函数名:GPIO_ReadInputDataBit 函数原形:u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin) 功能描述:读取指定端口管脚的输入 参数1:GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设 参数2:GPIO_Pin:待读取的端口位 返回值 :输入端口管脚值 u8 ReadValue; ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);
定时器的初始化函数
函数TIM_TimeBaseInit 函数名:TIM_TimeBaseInit 函数原形; void TIM_TimeBaseInit(TIM_TypeDef* TIMx,f*TIM_TimeBaseInitStruct) 功能描述:根据TIM_TimeBaseInitStruct中指定的参数初始化 TIMx的时间基数单位 输入参数1 :TIMx:x可以是2,3或者4,来选择TIM外设 输入参数2;TIMTimeBase_InitStruct:指向结构 TIM_TimeBaseInitTypeDef的指针,包含了TIMx时间基 数单位的配置信息
上节课内容回顾
函数名:GPIO_ReadInputData 函数原形:u16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx) 功能描述:读取指定的GPIO端口输入 参数1:GPIOx:x可以是A,B,C,D或者E,来选择GPIO外 设 返回值 :GPIO输入数据端口值 u16 ReadValue; ReadValue = GPIO_ReadInputData(GPIOC);
STM32学习资料
学习STM32的资料
1./archive