实验七 基本定时器输出实验

本文由用户“is03wush”分享发布 更新时间:2021-10-02 02:48:07 举报文档

以下为《实验七 基本定时器输出实验》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

实验七: TIM实验-定时输出实验

实验目的:

熟悉STM32开发平台的软硬件,学会使用STM32的固件库,能够编程实现项目功能。

实验内容:

配置GPIO端口,能够设置PWM输出对应管脚的端口模式

实现TIM定时控制LED进行周期的闪烁

实验过程

1、TIM简介

定时器是MCU中常用的外设,用于实现计数、定时等功能。常用于脉冲计数、时间控制和波形控制等场合。

STM32F103有8个通用功能的定时器(还有几个专用的,例如看门狗、RTC,将在相关章节讲解),分别是TIM1-TIM8,它们分为三组:高级控制定时器、通用定时器和基本定时器。

TIMx由一个16位的自动装载的计数器组成,受一个可配置的预分频器驱动。主要特性如下:

基本计数,定时功能,计数范围1-65535。

每个定时器有四个独立通道,TIM1还有三个通道可产生互补信号。

适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形。

使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。

定时器之间完全独立的,它们不共享任何资源,可以同步操作。

PWM(Pulse Width Modulation,脉冲宽度调制)是一种对模拟信号电平进行数字编码的方法,它利用脉冲宽度即占空比来表示一个模拟信号电平的高低,是一种数字信号对模拟电路进行控制的非常有效的技术。

在STM32F103中,TIMx模块可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCR(捕获/比较)寄存器确定占空比的PWM信号。

2、GPIO端口配置

由于开发板上标准配置具备LED控制的功能和硬件接口,所以要做本章的实验可以采用开发板实现。

图1-1 LED连某某示意图

根据学过的GPIO配置的知识,对于LED端口配置可配置成复用推挽输出模式,配置代码内容如下所示:

void LED_GPIO_Config(void)

{

/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;

/*开启LED相关的GPIO外设时钟*/

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);

/*选择要控制的GPIO引脚*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

/*设置引脚模式为通用推挽输出*/

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

/*设置引脚速率为50MHz */

GPIO_InitStructure.GPIO_Speed = 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 _CounterMode_Up;

// 重复计数器的值,基本定时器没有,不用管

//TIM_TimeBaseStructure.TIM_RepetitionCounter=0;

// 初始化定时器

TIM_TimeBaseInit(BASIC_TIM, &TIM_TimeBaseStructure);

// 清除计数器中断标志位

TIM_ClearFlag(BASIC_TIM, TIM_FLAG_Update);

// 开启计数器中断

TIM_ITConfig(BASIC_TIM,TIM_IT_Update,ENABLE);

// 使能计数器

TIM_Cmd(BASIC_TIM, ENABLE);

}

4、定时器中断服务函数部分

中断函数主要是调用库函数中对于定时器中断服务子程序进行编写,此部分代码如下所示:

void BASIC_TIM_IRQHandler(void)

{

if ( TIM_GetITStatus( BASIC_TIM, TIM_IT_Update) != RESET )

{

time++;

TIM_ClearITPendingBit(BASIC_TIM , TIM_FLAG_Update);

}

}

7、主程序部分

主程序部分主要是调用各个外设端口部分的初始化程序,主循环中调用控制子函数,主程序部分代码如下所示:

int main(void)

{

/* LED 端口初始化 */

LED_GPIO_Config();

BASIC_TIM_NVIC_Config();

BASIC_TIM_Config();

while(1)

{

if( time == 500 )

{

time = 0;

ledr_toggle();

}

}

}

void ledr_toggle(void)

{

if(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5) == 0) // LEDR is on

{

GPIO_SetBits(GPIOB, GPIO_Pin_5); // LEDR OFF

}

else // LEDR is off

{

GPIO_ResetBits(GPIOB, GPIO_Pin_5); // LEDR ON

}

}

实验现象

1.编译整个程序,编译完成后观察Build Output输出的信息,若显示 0 Error(s),0 Warnig(s),则证明程序编译无问题,继续下一步下载操作。

2.连某某J-Link至开发板,将USB插入电脑,下载程序至开发板,观察实验现象,LED以500ms的周期进行亮灭闪烁。

[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。

  1. 夏季学期微处理器报告
  2. 《酸和碱的中和反应》教学设计
  3. 大学计算机网络作业及实验报告
  4. 八路彩灯控制系统实验报告
  5. 基于 STM32F103 单片机的按键中断 LED 实验
  6. 电气控制与plc技术-实验报告1
  7. 光纤通信与数字传输实验报告 基于GPON的组播业务开通实验
  8. 实验指导书-实验1 基本交换机配置
  9. 实验指导书-实验2 VLAN和VTP配置
  10. 实验一www和ftp配置

以上为《实验七 基本定时器输出实验》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览