STM32 开发板教程
3.3 实验二按键
实验名称
按键控制流水灯 实验目的
学习STM32的IO口使用方法,了解按键的检测方法。 实验内容
了解STM32单片机的IO口配置、IO口的一些寄存器和IO口的一些库函数及库函数的调用,了解按键按下的检测,并编写按键程序。
按下KEY1键LED4-LED1依次流水,按下KEY2键LED1-LED4依次流水,按下KEY3键四个灯全闪烁。 实验原理
按键的检测主要是通过读取IO口的高低电平来判断按键是按下还是弹起。主要也是了解IO口的使用(IO口的使用在实验一有详细介绍,这里不在介绍) 实验步骤
1、打开STM32开发板\\例程\\key 的工程,并编译。
2、给板子供电并连接下载线,并连接JP4的跳冒建立按键与单片机的连接,都连接好后点击运行。
3、观察现象。
3.4 实验三定时器
实验名称
定时器控制LED灯的闪烁 实验目的
学习STM32单片机定时器的使用,了解如何配置定时器的一些寄存器。 实验内容
利用定时器中断,实现LED4灯的闪烁 实验原理
这一节主要介绍了STM32的通用定时器,STM32的定时器功能非常强大,有TIME1 和TIME8 等高级定时器,也有TIME2~TIME5 等通用定时器,还有TIME6 和TIME7 等基本定时器。
STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。 使用定时器预分频器和RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。
STM3 的通用TIMx (TIM2、TIM3、TIM4 和TIM5)定时器功能包括: 1)16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。
2)16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~ 65535 之间的任意数值。
3)4 个独立通道(TIMx_CH1~4),这些通道可以用来作为: 康泰医学系统有限公司 16 www.contecmed.com
STM32 开发板教程
A.输入捕获 B.输出比较
C.PWM 生成(边缘或中间对齐模式) D.单脉冲模式输出
4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用1 个定时器控制另外
一个定时器)的同步电路。
5)如下事件发生时产生中断/DMA:
A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) C.输入捕获 D.输出比较
E.支持针对定位的增量(正交)编码器和霍尔传感器电路 F.触发输入作为外部时钟或者按周期的电流管理
康泰医学系统有限公司 17 www.contecmed.com
STM32 开发板教程
图 3.4.1 定时器的库函数
图3.4.1为定时器的一些库函数
这一节,我们将使用定时器产生中断,然后在中断服务函数里面翻转LED4 上的电平,来 指示定时器中断的产生。接下来我们以通用定时器TIM2 为实例,说明一下配置定时器的步骤:
1、TIME2时钟使能
2、设置TIME2_ARR和TIME2_PSC的值 3、设置TIME2_DIER允许更新中断 4、允许TIME2工作 5、TIME2中断分组设置 6、编写中断服务函数
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);//使能定时器TIME2时钟 康泰医学系统有限公司 18 www.contecmed.com
STM32 开发板教程
TIM_TimeBaseStructure.TIM_Prescaler = 7199;//预分频值
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式 TIM_TimeBaseStructure.TIM_Period = 5000;//装载寄存器周期
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//时钟分割 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ClearFlag(TIM2,TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//使能中断源 TIM_Cmd(TIM2, ENABLE);//使能定时器TIME2 TIM1 是由PCLK2(72MHz)得到,TIM2-7是由 PCLK1 得到关键是设定时钟预分频数,自动重装载寄存器周期的值。 定时时间的计算 :s=((TIM_Prescaler+1)\\fPCLK1)*TIM_Period
实验步骤
1、打开STM32开发板\\例程\\time 的工程,并编译。
2、给板子供电并连接下载线,并连接JP2的跳冒建立LED4与单片机的连接,都连接好后点击运行。
3、观察现象。
3.5 实验四PWM
实验名称
PWM 控制蜂鸣器,演奏do、re、mi、fa、so、la、si 实验目的
1、了解通用定时器的结构、功能和特点 2、掌握蜂鸣器的控制方法 3、掌握定时器的寄存器的操作 实验内容
通过产生的PWM的频率不同,使蜂鸣器声音发生变化。从而演奏出do、re、mi、fa、so、la、si。 实验原理
上一节中我们介绍了定时器的库函数,这节就不做介绍了。我们主要利用TIM4的CH4输出的PWM来控制蜂鸣器的声音。所以在软件上我们主要控制PWM的输出。
表 3.5.1 不同的声音对应的频率 低音 中音 高音 1 262 523 1046 2 294 578 1175 3 330 659 1318 4 349 698 1397 5 392 784 1568 6 440 880 1760 7 494 988 1976 TIME4输出PWM波的配置步骤:
1、开启TIME4时钟,配置PB9为复用输出 2、设置TIME4_ARR和TIME4_PSC的值 3、设置TIME4_CH4的PWM模式
4、使能TIME4的CH4输出,使能TIME4
康泰医学系统有限公司 19 www.contecmed.com
STM32 开发板教程
5、修改TIME4_CCR4来调节占空比
TIM_TimeBaseStructure.TIM_Prescaler = 10;//预分频值
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式 TIM_TimeBaseStructure.TIM_Period = 6883;//装载寄存器周期 TIM_TimeBaseStructure.TIM_ClockDivision = 0;//时钟分割 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 3441;//装入比较寄存器的脉冲值 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OC4Init(TIM4, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM4, ENABLE); TIM_Cmd(TIM4, DISABLE); 实验步骤
1、打开STM32开发板\\例程\\pwm的工程,并编译。
2、给板子供电并连接下载线,并连接JP18的跳冒建立蜂鸣器与单片机的连接,都连接好后点击运行。 3、观察现象。
3.6 实验五串口
实验名称
实现单片机和电脑数据的收发 实验目的
1、学习STM32的串口,并了解如何配置STM32的串口 2、熟悉串口一些常用寄存器 实验内容
通过设置串口实现单片机和电脑的通信,电脑发送数据,单片机接收并发送出去 。 实验原理
作为软件开发重要的调试手段,串口的作用是很大的。在调试的时候可以用来查看和输入相关的信息。在使用的时候,串口也是一个和外设(比如GPS,GPRS 模块等)通信的重要渠道。
串口最基本的设置,就是波特率的设置。STM32 的串口使用起来还是蛮简单的,只要您开启了串口时钟,并设置相应IO 口的模式,然后配置一下波特率,数据位长度,奇偶校验位等信息,就可以使用了,下面以USART3介绍一下配置定时器的步骤: 1、使能USART3时钟 2、串口比特率设置 3、串口控制
4、数据的发送与接收
下面介绍一下串口的一些库函数如下图所示:
康泰医学系统有限公司 20 www.contecmed.com
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库STM32教程(1) - 图文(4)在线全文阅读。
相关推荐: