[HAL库学习之路]7.定时器中断

发布者:幸福旅程最新更新时间:2018-06-18 关键字:HAL库  定时器中断 手机看文章 扫描二维码
随时随地手机看文章

一、Pinout

引脚配置

二、Clock Configuration

时钟配置

三、Configuration

GPIO配置
定时器配置
定时器配置
定时器溢出时间

Tout=((arr+1)∗(psc+1))/TclkTout=((arr+1)∗(psc+1))/Tclk


四、Generate Code

生成代码

代码 
定时器溢出时间为500ms,500ms翻转一次LED状态

int main(void)

{


  /* USER CODE BEGIN 1 */


  /* USER CODE END 1 */


  /* MCU Configuration----------------------------------------------------------*/


  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();


  /* USER CODE BEGIN Init */


  /* USER CODE END Init */


  /* Configure the system clock */

  SystemClock_Config();


  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */


  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_TIM3_Init();


  /* USER CODE BEGIN 2 */

  HAL_TIM_Base_Start_IT(&htim3);

  /* USER CODE END 2 */


  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)

  {

  /* USER CODE END WHILE */


  /* USER CODE BEGIN 3 */


  }

  /* USER CODE END 3 */


}


void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

    static unsigned char ledState = 0;

    if (htim == (&htim3))

    {

        if (ledState == 0)

            HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);

        else

            HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);

        ledState = !ledState;

    }

}


关键字:HAL库  定时器中断 引用地址:[HAL库学习之路]7.定时器中断

上一篇:STM32 HAL库学习系列第8篇---回调函数总结
下一篇:stm32 ucos LED灯延时闪烁+按键闪烁+串口输出

推荐阅读最新更新时间:2024-03-16 16:05

51单片机学习笔记【四】——定时器中断系统
一.定时器 1.基础介绍 (1).时钟周期 时钟周期T是单片机时序中的最小单位,具体计算的方法就是时钟源分之一。 (2).机器周期 单片机完成一个操作的最短时间,51单片机的一个机器周期是12个时钟周期。 (3).定时器应用 定时器是用来计时的,内部有一个寄存器,开始计时后,寄存器的值每经过一个机器周期就会自动加一,可以把机器周期理解为定时器的计数周期。16位的定时器,加到65535,再加1就算溢出,溢出后值变为0。 2.定时器的寄存器 标准51单片机内部有T0和T1两个定时器,TH0/TH1用于T0,TH1/TH0用于T1.复位值都为0x00. 名称 描述 SFR地址 TH0 定时器0高子节 0x8C T
[单片机]
STM32标准库和HAL库有什么不同 我们怎么用
摘要:通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。 网上关于标准库、HAL库的描述相信是数不胜数。可是一个对于很多刚入门的朋友还是没法很直观的去真正了解这些不同开发发方式彼此之间的区别,所以笔者想以一种非常直白的方式,用自己的理解去将这些东西表述出来,如果有描述的不对的地方或者是不同意见的也可以大家提出。 一、配置寄存器不少先学了51的朋友可能会知道,会有一小部分人或是教程是通过汇编语言直接操作寄存器实现功能的,这种方法到了STM32就变得不太容易行得通了。 因为STM32的
[单片机]
STM32标准库和<font color='red'>HAL库</font>有什么不同 我们怎么用
msp430定时器A中断实例
//例程描述:利用定时器定时功能,实现P1.0方波输出。 #include msp430x14x.h { WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。 P1DIR |= 0x01; //设置P1.0口方向为输出。 CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。 CCR0 = 50000; //捕获/比较控制寄存器CCR0初值为5000。 TACTL = TASSEL_2 + MC_2; //设置定时器A控制寄存器TACT
[单片机]
AVR单片机定时器T0的基本中断使用ICCAVR
#include iom128v.h void main(void) { TCNT0=0x83; TCCR0=0x07; TIMSK=0x01; SEI(); DDRC=0xff; PORTC=0; OCR0=0X00; while(1); } #pragma interrupt_handler Timer0:iv_TIMER0_OVF void Timer0() { TCNT0=0x83; PORTC=~PORTC; } 得出一个结论:别指望巧合。
[单片机]
HAL库之485+DMA通信(STM32F746)
1.首先一定要保证硬件正确,包括接线,工具正常; 2.其次基本配置一定要正确,例如此次配置485的时候,可以实现DMA发送,却不能实现接收。而同样的串口参数配置使用中断方式和232接口都能实现发送接收,个人判断是是接收DMA部分配置有问题,结果卡了很久才发现是基本的管脚配置有误。485的三根引脚要配置成推挽输出,复用,复用模式。 3.最后,还是要多总结经验,多看看源代码。 硬件如下: 其实本质上还是串口通信,只不过多了一个开关控制(485-DIR),用来控制是发送数据还是接收数据,因此是半双工模式。 配置流程:时钟使能,引脚配置,串口配置(波特率,校验位等),DMA配置(需要配置串口中断)。 void US
[单片机]
<font color='red'>HAL库</font>之485+DMA通信(STM32F746)
【STM32】HAL库-嵌套向量中断控制器NVIC
中断与异常 嵌套向量中断控制器,简称为NVIC,其支持为数众多的系统异常和外部中断。 Cortex-M3支持256个中断。 中断/异常类型表如下 编号为 1-15 的称为系统异常(注意:没有编号为 0 的异常),大于等于 16 的称为(外部)中断。 除了个别异常的优先级被定死外,其它中断/异常的优先级都是可编程的 外部中断表如下 优先级 在 CM3 中,优先级对于异常来说很关键的,它会决定一个异常是否能被掩蔽,以及在未掩蔽的情况下何时可以响应。优先级的数值越小,则优先级越高。 CM3 支持中断嵌套,使得高优先级异常会抢占(preempt)低优先级异常。 有3个系统异常的优先级是固定的,并且是负数,分别
[单片机]
【STM32】<font color='red'>HAL库</font>-嵌套向量<font color='red'>中断</font>控制器NVIC
5.HAL库之时钟系统及定时器SYSTICK
1.系统时钟树: LSI:低速内部时钟(RC震荡器),32kHz,提供低功耗时钟,用于看门狗和自动唤醒单元。 LSE:低速外部时钟,外接32.768kHz的石英晶体,可用于RTC。 HSI:高速内部时钟16MHz,RC振荡器,精度不高,可用作系统时钟或PLL输入。 HSE:高速外部时钟4~26MHz,外接石英/陶瓷谐振器或外部时钟源,可用作RTC或PLL或系统时钟。 PLL:锁相环倍频输出,包括主PLLCLK(生成高速系统时钟216MHz和生成USB等的时钟4PLL48CLK,48MHz)和专用PLLI2SR(生成精确时钟,在I2S接口实现高品质音频性能,PLLI2Q用作SAI时钟。
[单片机]
5.<font color='red'>HAL库</font>之时钟系统及<font color='red'>定时器</font>SYSTICK
STM8S003定时器1中断服务程序(PWM)中开启定时器2定时计数
STM8S003定时器1中断服务程序(PWM)中开启定时器2定时定时功能,那么在定时器1中断服务程序退出时,立即就产生了定时器2更新中断,但是轴定时器2中断服务程序中(PWM),开启定时器2定时功能,却工作正常,何故? 这是定时器1中断服务程序的开启定时器2的代码: //TIM2_Cmd(DISABLE); TIM2- CR1 &= (uint8_t)(~TIM2_CR1_CEN); //TIM1_Cmd(DISABLE); TIM1- CR1 &= (uint8_t)(~TIM1_CR1_CEN); gsMOTOR.ucPulseCnt = 0;
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved