单片机产品设计与调试-基于STM32F1xx机型和HAL库函数 课件 任务1.6-STM32软硬件深入(一)_第1页
单片机产品设计与调试-基于STM32F1xx机型和HAL库函数 课件 任务1.6-STM32软硬件深入(一)_第2页
单片机产品设计与调试-基于STM32F1xx机型和HAL库函数 课件 任务1.6-STM32软硬件深入(一)_第3页
单片机产品设计与调试-基于STM32F1xx机型和HAL库函数 课件 任务1.6-STM32软硬件深入(一)_第4页
单片机产品设计与调试-基于STM32F1xx机型和HAL库函数 课件 任务1.6-STM32软硬件深入(一)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机产品设计与制作

(stm32机型)袁秀英石梅香项目1、利用GPIO和位带操作实现温度报警任务1.6STM32深入(一)总目录1项目1、利用GPIO和位带操作实现温度报警

2项目2、利用SysTick实现温度报警与控制

3项目3、利用按键查询实现参数设定及显示

4项目4、利用外部中断实现工件计数显示

5项目5、利用定时器实现直流电动机PWM调速6项目6、利用计数器实现工件计数显示和打包控制

7项目7、利用ADC实现土壤湿度采集

具体工作任务设计基于STM32单片机的温度报警器,实现如下功能:

温度超过设定温度(30℃)时,报警灯点亮;否则,报警灯熄灭。请进行1、方案设计2、器件选型3、电路和程序设计4、完成软硬件调试。项目总目标1、了解单片机的发展及用途,理解其关键概念与术语;2、了解单片机产品的开发过程,会使用开发工具进行软硬件设计与调试;3、理解基于STM32F103ZET6的电源电路原理,能够独立进行电源电路的设计与调试;4、理解按键、温度开关等简单DI电路的原理,能够独立进行类似电路的设计与调试;5、理解LED等简单DO电路的原理,能够独立进行类似电路的设计与调试;6、掌握基于HAL库函数的GPIO引脚读写和位操作编程方法;7、能够按照分组管理的模块化设计方法进行程序设计与调试;8、了解STM32GPIO电路的内部结构;9、会查找相关资料、阅读相关文献。子目录1项目1、利用GPIO和位带操作实现温度报警

1.1任务1.1 认识STM32单片机及其开发工具1.2任务1.2 方案设计

1.3任务1.3 电路设计

1.4任务1.4 程序设计

1.5任务1.5 利用位带操作实现温度报警

1.6任务1.6 stm32软硬件深入(一)

本次课任务1、GPIO内部是什么样的结构,支持它既能读也能写?2、程序和电路该如何配合?3、STM32内部除了GPIO还有些啥?1、进一步理解GPIO的工作模式及设置方法;2、能看懂GPIO内部结构;3、能说出STM32F1xx内部组成及主要功能;4、会自主查找阅读GPIO库函数和STM32引脚定义相关资料。引脚用途ModePullSpeed数字量输入(DI)GPIO_MODE_INPUT(输入)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

数字量输出(DO)GPIO_MODE_OUTPUT_PP(推挽输出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_OUTPUT_OD(开漏输出)复用输入(AlternateIn)GPIO_MODE_AF_INPUT(复用输入)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

复用输出(AlternateOut)GPIO_MODE_AF_PP(复用推挽输出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_AF_OD(复用开漏输出)模拟量(Analog)GPIO_MODE_ANALOG(模拟量)GPIO_NOPULL(浮空)

中断请求(Interrupt)GPIO_MODE_IT_RISING(上升沿中断请求)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

GPIO_MODE_IT_FALLING(下降沿中断请求)GPIO_MODE_IT_RISING_FALLING(上升和下降沿中断请求)事件请求(Event)GPIO_MODE_EVT_RISING(上升沿事件请求)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

GPIO_MODE_EVT_FALLING(下降沿事件请求)GPIO_MODE_EVT_RISING_FALLING(上升沿和下降沿事件请求)引脚用途ModePullSpeed数字量输入(DI)GPIO_MODE_INPUT(输入)GPIO_NOPULL(不拉,浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)

如何确定GPIO的工作模式1、GPIO做DI引脚1、GPIO做DI引脚如何确定GPIO的工作模式练一练:确定以下电路GPIO引脚的工作模式,并编写初始化程序。

如何确定GPIO的工作模式引脚用途ModePullSpeed数字量输出(DO)GPIO_MODE_OUTPUT_PP(推挽输出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_OUTPUT_OD(开漏输出)2、GPIO做DO引脚如何确定GPIO的工作模式2、GPIO做DO引脚当STM32单片机与LED、蜂鸣器等设备进行连接时,可以将其工作模式设置为推挽输出或开漏输出中的一种,它们都属于DO输出。STM32GPIO引脚推挽输出的驱动能力为±25mA。如果负载电流在这个范围,就可以直接用GPIO引脚驱动负载,并将其设为推挽输出模式。(a)LED点亮时,电流流入单片机(灌电流、挽)

(b)LED点亮时,电流流出单片机(拉电流、推)如何确定GPIO的工作模式可以将负载接在GPIO引脚和地之间也可将负载接在GPIO引脚和电源正极之间但要注意确保负载能正常工作1.直插发光二极管压降红色发光二极管的压降为2.0--2.2V黄色发光二极管的压降为1.8—2.0V绿色发光二极管的压降为3.0—3.2V正常发光时的额定电流约为20mA。2.贴片LED压降红色的压降为1.82-1.88V,电流5-8mA绿色的压降为1.75-1.82V,电流3-5mA橙色的压降为1.7-1.8V,电流3-5mA兰色的压降为3.1-3.3V,电流8-10mA白色的压降为3-3.2V,电流10-15mA.STM32F103ZET6PA03.3V200限流电阻PA0输出低电平LED点亮PA0输出高电平LED熄灭灌电流(亮灯时电流灌入芯片)PA0输出高电平LED点亮PA0输出低电平LED熄灭STM32F103ZET6PA0200限流电阻拉电流(亮灯时电流流出芯片)限流电阻计算:R=(VDD-LED管压降)/LED工作电流如何确定GPIO的工作模式2、GPIO做DO引脚当负载工作电流大于25mA时,推挽输出提供的电流不能满足负载的工作需要。此时仍可以将STM32设置为推挽输出,然后在负载和单片机之间加入驱动电路。如图,STM32的PB5直接接三极管的基极,再通过三极管驱动电路驱动蜂鸣器。由于三极管基极需要的电流很小,STM32完全可以提供;三极管射极电流较大,可以驱动蜂鸣器工作。当然,驱动电路也可以采用其它电路形式和驱动器件。2、GPIO做DO引脚如何确定GPIO的工作模式2、GPIO做DO引脚如何确定GPIO的工作模式推挽输出情况下,输出电流的大小受到内部等效电阻的限制设为推挽输出(OUTPUT_PP):PA0输出“1”时,通过内部等效电阻为负载供电设为开漏输出(OUTPUT_OD):PA0与内部等效电阻之间不通PA0输出“1”时,内部悬空必须外接上拉电阻通过外部上拉电阻为负载供电没有外部上拉电阻,负载也悬空,得不到高电平改变外部上拉电阻大小,可在一定范围内提高负载电流如果负载是5V供电可再程序中将GPIO引脚设置为漏极开路输出(OUTPUT_OD)并在电路中外接上拉电阻这是STM32漏极开路输出的主要应用——用GPIO引脚驱动DC5V负载2、GPIO做DO引脚练一练:(1)用PA8接收压力传感器输入,用PB12连接LED,PB12接LED负极,要求PA15浮空输入模式,PB12推挽输出,画电路,编写完整程序。(2)用PA3接收行程开关输入,用PE2连接LED,PE2接LED正极,画电路,要求PA3上拉输入,PE2开漏输出,画电路,编写完整程序。如何确定GPIO的工作模式引脚用途ModePullSpeed复用输入(AlternateIn)GPIO_MODE_AF_INPUT(复用输入)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)3、GPIO做复用输入引脚如何确定GPIO的工作模式为了减少引脚数量,单片机的引脚大多具有多个功能。这被称为引脚复用技术。例如PC14引脚,它既可以作为PC14引脚,接收传感器输入,或者控制LED等设备的工作;也可以作为OSC32_IN引脚为芯片的RTC电路提供时钟输入。而PC15引脚则既可以作PC15,也可以做OSC32_OUT,作为RTC的时钟输出引脚。当GPIO引脚使用复用功能时,就是复用功能被开启。当复用功能也分为输入和输出两种情况。复用功能的具体使用方法本项目暂不介绍。引脚用途ModePullSpeed复用输出(AlternateOut)GPIO_MODE_AF_PP(复用推挽输出)

GPIO_SPEED_FREQ_LOW(低速,最大2MHz)GPIO_SPEED_FREQ_MEDIUM(中速,最大10MHZ)GPIO_SPEED_FREQ_HIGH(高速,最大50MHz)GPIO_MODE_AF_OD(复用开漏输出)4、GPIO做复用输出引脚如何确定GPIO的工作模式当STM32单片机与热电偶、热电阻等模拟量输出的传感器进行连接时,需要将引脚设为模拟输入。当STM32单片机需要向负载输出模拟电压或电流信号时,需要将引脚设置为模拟输出模拟量输入输出的具体方法本项目暂不介绍。5、GPIO做模拟量信号引脚如何确定GPIO的工作模式引脚用途ModePullSpeed模拟量(Analog)GPIO_MODE_ANALOG(模拟量)GPIO_NOPULL(浮空)引脚用途ModePullSpeed中断请求(Interrupt)

GPIO_MODE_IT_RISING(上升沿中断请求)GPIO_NOPULL(浮空)GPIO_PULLUP(上拉)GPIO_PULLDOWN(下拉)GPIO_MODE_IT_FALLING(下降沿中断请求)GPIO_MODE_IT_RISING_FALLING(上升和下降沿中断请求)事件请求(Event)

GPIO_MODE_EVT_RISING(上升沿事件请求)GPIO_MODE_EVT_FALLING(下降沿事件请求)GPIO_MODE_EVT_RISING_FALLING(上升和下降沿事件请求)6、GPIO做中断/事件请求引脚如何确定GPIO的工作模式GPIO引脚也可以用于接收中断或事件请求。具体使用方法本项目暂不介绍。GPIO的内部结构每一根GPIO引脚在内部都对应一套电路,包括保护电路、输入电路和输出电路等当引脚例如PA0做DI输入时

CPU会自动禁止输出电路工作允许输入电路工作当引脚例如PA0做DO输出时

CPU会自动禁止输入电路工作允许输出电路工作GPIO管腿做开关量/数字量输入(DI)引脚上输入的信号经保护电路、内部上拉/下拉电路、“肖特基触发器”比较后输出0或者1被送入“输入数据寄存器”储存起来等待程序读出1、GPIO做DI引脚,应被设置为GPIO_MODE_INPUT设置为GPIO_NOPULL——内部上拉和下拉开关都断开外部引脚能得到稳定高、低电平时使用设置为GPIO_PULLUP——内部上拉开关闭合确保引脚悬空时内部能得到稳定高电平设置为GPIO_PULLDOWN——内部下拉开关闭合确保引脚悬空时内部能得到稳定低电平HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)例如PA0设置为GPIO_MODE_INPUT——就是使能肖特基触发器和输入数字寄存器0/1GPIO管腿做数字量输出(DO)输出数据寄存器”的内容经输出驱动送到I/O引脚2、GPIO做DO引脚,且设置为推挽输出GPIO_MODE_OUTPUT_PP时HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET

)例如PA0“1”“0”“0”1多路开关输出得到高电平导通截止GPIO管腿做数字量输出(DO)“输出数据寄存器”的内容经输出驱动送到I/O引脚2、GPIO做DO引脚,且设置为推挽输出GPIO_MODE_OUTPUT_PP时HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET

)例如PA0“0”“1”“1”0多路开关输出得到低电平截止导通GPIO管腿做数字量输出(DO)“输出数据寄存器”的内容经输出驱动送到I/O引脚2、GPIO做DO引脚,且设置为漏开输出GPIO_MODE_OUTPUT_OD时HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET

)例如PA0“1”“0”“0”1多路开关输出引脚悬空被断开截止要想使连接在引脚上的负载得到稳定的高电平,就必须外接上拉电阻。GPIO管腿做数字量输出(DO)“输出数据寄存器”的内容经输出驱动送到I/O引脚2、GPIO做DO引脚,且设置为漏开输出GPIO_MODE_OUTPUT_OD时HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET

)例如PA0“0”“1”“1”0多路开关被断开导通输出得到低电平漏极开路输出不会影响低电平输出GPIO管腿做模拟输入/输出(AI/AO)此时I/O引脚上输入的信号也不经过TTL肖特基触发器,而是直接送入片上的模拟量输入电路,等待模拟量输入电路处理。3、GPIO做AI(模拟量输入)引脚,应被设置为GPIO_MODE_ANALOG模拟量输入信号不需要肖特基触发器也不需要上下拉电阻(NOPULL)GPIO管腿做模拟输入/输出(AI/AO)此时模拟量输出设备的输出信号被送到引脚上。4、GPIO做AO(模拟量输出)引脚,也应被设置为GPIO_MODE_ANALOG模拟量输出信号有自己的输出驱动电路,不需要推挽输出或漏极开路输出电路GPIO管腿做复用输入/输出(AF)引脚上输入的信号经“肖特基触发器”比较后输出0或者1,被送入复用功能对应的电路5、GPIO做复用输入引脚,应设置为GPIO_MODE_AF_INPUT复用输入电路需要数字量输入,因此需要肖特基触发器,也有上下拉的设置需求GPIO管腿做复用输入/输出(AF)来自复用设备的信号,经多路开关被输出到输出驱动电路,最后送到I/O引脚6、GPIO做复用输入引脚,应设置为GPIO_MODE_AF__PP时例如PA0多路开关复用输出电路是数字量输出,与GPIO共用输出驱动电路GPIO管腿做复用输入/输出(AF)来自复用设备的信号,经多路开关被输出到输出驱动电路,最后送到I/O引脚6、GPIO做复用输入引脚,应设置为GPIO_MODE_AF__OD时例如PA0多路开关被断开复用输出电路是数字量输出,与GPIO共用输出驱动电路STM32内部组成部件(1)Cortex内核,即CPU部分,它是单片机的核心和大脑。APB2APB1STM32内部组成部件(2)Flash:FlashROM(FlashReadOnlyMemory),闪速程序存储器。主要用于存储用户编好的程序。STM32F103ZET6有512KBFLASHROM(3)SRAM:静态数据存储器(StaticRandomMemory),主要用于存储程序运行中需要的各种变量。STM32F103ZET6有64KBSRAM(4)FSMC:外部扩展存储器接口,用于扩展单片机片外存储器,以获得更大的存储容量。APB2APB1STM32内部组成部件(5)SDIO:SD卡接口,用于与SD卡设备通信。(6)复位和时钟控制电路(RCC):为单片机内的各个部件提供时钟。APB2APB1STM32内部组成部件(7)GPIO:包括GPIOA、GPIOB、……GPIOG。是通用输入输出端口(GeneralInputOuputPort),可以接收按键、传感器等设备的输入,也能控制LED等设备的输出。对单片机应用开发工程师而言,GPIO是最经常被使用、直接打交道的设备。GPIO是双向端口,既可用于数据输入,也可用于数据输出。(8)TIM1~TIM8:定时器,当需要进行精确定时时,可以使用定时器。APB2APB1STM32内部组成部件(9)ADC1~ADC3:模拟量输入接口。能够将输入模拟量转换成数字量送CPU(Cortex)。当单片机需要处理模拟量输入,例如热电偶的mV信号时,就需要用到ADC(AnalogDigitalConverter)。(10)DAC:模拟量输出接口。可以将CPU输出的数字量转换成模拟量输出到外部设备,以提供一个0~VREF的可控电压APB2APB1STM32内部组成部件(11)USB接口:用于与USB设备的通信。(12)UART、SPI、I2C、CAN接口:用于与UART、SPI、I2C、CAN等设备进行通信。(13)DMA:直接存储器访问(DirectMemoryAccess),用于存储器与设备之间直接进行数据交换而不是通过CPU进行交换。APB2APB1STM32内部组成部件(14)总线:总线是设备之间信号联系的通道。包括Icode总线、Dcode总线System总线、DMA总线、总线矩阵、AHB总线、APB1总线、APB2总线等。Cortex-M3内核与Flash、SRAM、GPIO等设备之间必须通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论