【N32L40X】学习笔记08-定时器的基本定时功能-超时功能

定时器的基本定时功能

  1. 该函数库的目的就是在统一的地方配置,将配置的不同项放置在一个结构体内部
  2. 使用一个枚举来定义一个的别名
  3. 该库就是基本定时产生超时中断

bsp_time_base.h

#ifndef _BSP_BASE_TIME_H_
#define _BSP_BASE_TIME_H_#include <stdint.h>
#include "n32l40x.h"typedef enum
{TIME_ID_1,
//	TIME_ID_2,
//	TIME_ID_3,TIME_NUM//led数量
}TIME_ID;typedef struct
{TIM_Module* time;uint32_t time_rcc;uint16_t irq_x;uint32_t period;//重载值uint32_t prescaler;//预分频器uint8_t it_update;//是否使能更新中断
}time_t;/*** 基本定时器初始化*/
void bsp_time_init(time_t *ptime);
//一键初始化所有定时器
void bsp_timers_init(void);#endif

bsp_time_base.c

#include "bsp_include.h"
#include "timer/bsp_time.h"static time_t s_times[TIME_NUM] = {{TIM7,RCC_APB1_PERIPH_TIM7,TIM7_IRQn,3200,10000,1},//1ms
};/*** 中断相关初始化.*/
static void bsp_time_nvic_config(time_t *ptime)
{NVIC_InitType NVIC_InitStructure;/* Enable the TIM1 global Interrupt */NVIC_InitStructure.NVIC_IRQChannel                   = ptime->irq_x;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 0;NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;NVIC_Init(&NVIC_InitStructure);TIM_ConfigInt(ptime->time, TIM_INT_UPDATE, ENABLE);
}static void bsp_time_rcc_config(time_t *ptime)
{if(ptime->time==TIM1||ptime->time==TIM8){RCC_EnableAPB2PeriphClk(ptime->time_rcc, ENABLE);}else{RCC_EnableAPB1PeriphClk(ptime->time_rcc, ENABLE);}}/*** 基本定时器初始化*/
void bsp_time_init(time_t *ptime)
{TIM_TimeBaseInitType TIM_TimeBaseStructure;/* 定时器时钟分频PCLK1 = HCLK/4 */// RCC_ConfigPclk2(RCC_HCLK_DIV4);/* 1.时钟使能 */bsp_time_rcc_config(ptime);/* Compute the prescaler value */// PrescalerValue = 0; //(uint16_t) (SystemCoreClock / 12000000) - 1;/* Time 2.基本配置 */TIM_TimeBaseStructure.Period    = ptime->period;TIM_TimeBaseStructure.Prescaler = ptime->prescaler;//预分频器TIM_TimeBaseStructure.ClkDiv    = 0;TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;TIM_InitTimeBase(ptime->time, &TIM_TimeBaseStructure);//3.使能更新中断if(ptime->it_update){bsp_time_nvic_config(ptime)	;}/* 4.TIM1 使能计数 */TIM_Enable(ptime->time, ENABLE);
}//一键初始化所有定时器
void bsp_timers_init(void)
{for(int i=0; i<TIME_NUM; i++){bsp_time_init(s_times+i);}
}static uint8_t bsp_time_get_id(TIM_Module *tim)
{for(uint8_t x=0;x<TIME_NUM;x++){if(tim ==s_times[x].time)return x;}return 0xff;
}
//定时器中断集中处理函数
static void bsp_time_iaq(time_t *ptime)
{if (TIM_GetIntStatus(ptime->time, TIM_INT_UPDATE) != RESET){TIM_ClrIntPendingBit(ptime->time, TIM_INT_UPDATE);}}
void TIM7_IRQHandler(void)
{uint8_t id=bsp_time_get_id(TIM7);if(0XFF!=id){bsp_time_iaq(s_times+id);led_on_blink(LED1);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAXA中.exb或者.dwg文件保存为PDF

通常CAXAZ中的文件为.exb或者.dwg格式&#xff0c;我们想打印或者保存为PDF文件格式&#xff0c;那么就用一下的方法&#xff1a; CAXA文件如图所示&#xff1a; 框选出你要打印的图纸&#xff01;&#xff01;&#xff01;&#xff01; 我们选择"菜单"->"…

【算法基础:搜索与图论】3.5 求最小生成树算法(PrimKruskal)

文章目录 最小生成树介绍朴素Prim算法算法思路⭐例题&#xff1a;858. Prim算法求最小生成树 Kruskal算法算法思路⭐例题&#xff1a;859. Kruskal算法求最小生成树 最小生成树介绍 最小生成树 有关树的定义 生成子图&#xff1a;生成子图是从原图中选取部分节点以及这些节点…

Keepalived热备、Keepalived+LVS、HAProxy监控及后端服务器健康检查、负载均衡调度器对比

day02 day02KeepAlived高可用集群配置高可用的web集群监控本机80端口&#xff0c;实现主备切换实现原理实施配置高可用、负载均衡的web集群配置高可用、负载均衡HAProxy配置haproxy负载均衡调度器比较LVS&#xff08;Linux Virtual Server&#xff09;NginxHAProxy KeepAlive…

Pytorch个人学习记录总结 08

目录 神经网络-搭建小实战和Sequential的使用 版本1——未用Sequential 版本2——用Sequential 神经网络-搭建小实战和Sequential的使用 torch.nn.Sequential的官方文档地址&#xff0c;模块将按照它们在构造函数中传递的顺序添加。代码实现的是下图&#xff1a; 版本1—…

Linux——crontab使用实例

起因是实验室的主机USB驱动或者供电有问题&#xff0c;部分主机频繁出现USB断连的情况&#xff0c;通过dmesg查看报错 xHCI host controller not responding, assume dead 几经波折终于找到了拯救方案——https://bbs.archlinux.org/viewtopic.php?id236536 但是&#xff01;…

16_LinuxLCD驱动

目录 Framebuffer设备 LCD驱动简析 LCD驱动程序编写 LCD屏幕参数节点信息修改 LCD 屏幕背光节点信息 使能Linux logo显示 设置LCD作为终端控制台 Framebuffer设备 先来回顾一下裸机的时候LCD驱动是怎么编写的,裸机LCD驱动编写流程如下: 1.初始化I.MX6U的eLCDIF控制器,…

Jenkins发送的邮箱中没有带配置的压缩附件

【问题描述】&#xff1a;Jenkins中明明配置了邮箱发送时要带压缩附件&#xff0c;收到的邮箱中却没有附件内容 【问题定位】&#xff1a;压缩附件没有放在Jenkins工作空间下&#xff0c;所以发送的邮件并未发送附件 【解决办法】&#xff1a; 1&#xff09;把压缩附件放到J…

kubernetes持久化存储卷

kubernetes持久化存储卷 kubernetes持久化存储卷一、存储卷介绍二、存储卷的分类三、存储卷的选择四、本地存储卷之emptyDir五、本地存储卷之 hostPath六、网络存储卷之nfs七、PV(持久存储卷)与PVC(持久存储卷声明)7.1 认识pv与pvc7.2 pv与pvc之间的关系7.3 实现nfs类型pv与pvc…

Spring MVC拦截器和跨域请求

一、拦截器简介 SpringMVC的拦截器&#xff08;Interceptor&#xff09;也是AOP思想的一种实现方式。它与Servlet的过滤器&#xff08;Filter&#xff09;功能类似&#xff0c;主要用于拦截用户的请求并做相应的处理&#xff0c;通常应用在权限验证、记录请求信息的日志、判断用…

EfficientNetV2: Smaller Models and Faster Training

EfficientNetV2: Smaller Models and Faster Training 1.Abstract 本文提出了一种训练速度快、参数量少、模型小的卷积神经网络EfficientNetV2。 训练采用了NAS感知技术与缩放技术对训练速度与参数数量进行联合优化。 NAS感知技术&#xff1a; 全名是神经架构搜索&#xff0…

quartus工具篇——ROM ip核

quartus工具篇——ROM ip核 1、ROM简介 FPGA中的ROM(Read-Only Memory)是一种只读存储器,主要用来存储固化的初始化配置数据。FPGA ROM的特性主要有: 预编程初始化 - ROM在FPGA编程时就已经写入了初始值,这些值在整个工作周期保持不变。初始化配置 - ROM通常用来存储FPGA的初…

【Nginx10】Nginx学习:HTTP核心模块(七)请求体及请求限流

Nginx学习&#xff1a;HTTP核心模块&#xff08;七&#xff09;请求体及请求限流 对于一个请求来说&#xff0c;请求行、请求头、请求体共同构成了它的整体。不过如果仅仅是 GET 请求的话&#xff0c;其实一般会忽略掉请求体。但是&#xff0c;现在大部分的伪 RESTful 开发风格…

Flutter的开发环境搭建-图解

前言&#xff1a;Flutter作为一个移动应用开发框架&#xff0c;具有许多优点和一些局限性。最大的优点就是-跨平台开发&#xff1a;Flutter可以在iOS和Android等多个平台上进行跨平台开发&#xff0c;使用一套代码编写应用程序&#xff0c;节省开发时间和成本。 Flutter可以编…

自然语言处理NLP在Java语言的应用

什么是自然语言处理&#xff1f; 自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是计算机科学中的一个重要分支&#xff0c;旨在让机器能够理解、处理人类语言。 自然语言处理的技术应用 自然语言处理&#xff08;Natural Language Processing, NLP…

flask、uwsgi、nginx 部署

1. 安装&#xff1a; yum install openssl-devel nginx -y pip3 install flask uwsgi 2. 基于flask编写例子hello.py&#xff0c;然后保存在/opt/txt/目录下&#xff1a; from flask import Flask app Flask(__name__)app.route(/) def hello_world():return Hello World…

JVM运行时数据区——方法区、堆、栈的关系

方法区存储加载的字节码文件内的相关信息和运行时常量池&#xff0c;方法区可以看作是独立于Java堆的内存空间&#xff0c;方法区是在JVM启动时创建的&#xff0c;其内存的大小可以调整&#xff0c;是线程共享的&#xff0c;并且也会出现内存溢出的情况&#xff0c;也可存在垃圾…

vue、vuex、vue-router初学导航配合elementui及vscode快捷键

目录 一、vue资源 1.vue知识库汇总 2.vuejs组件 3.Vue.js 组件编码规范 目标 #目录 #基于模块开发

2023JAVA 架构师面试 130 题含答案:JVM+spring+ 分布式 + 并发编程》...

此文包含 Java 面试的各个方面&#xff0c;史上最全&#xff0c;苦心整理最全 Java 面试题目整理包括基JVM算法数据库优化算法数据结构分布式并发编程缓存等&#xff0c;使用层面广&#xff0c;知识量大&#xff0c;涉及你的知识盲点。要想在面试者中出类拔萃就要比人付出更多的…

3.18 Bootstrap 列表组(List Group)

文章目录 Bootstrap 列表组&#xff08;List Group&#xff09;向列表组添加徽章向列表组添加链接向列表组添加自定义内容 Bootstrap 列表组&#xff08;List Group&#xff09; 本章我们将讲解列表组。列表组件用于以列表形式呈现复杂的和自定义的内容。创建一个基本的列表组的…

【NetCore】02-NetCore启动过程

文章目录 Asp.NetCore启动过程1.Program类2.Start Up Asp.NetCore启动过程 1.Program类 Main函数调用CreateHostBuilder&#xff08;&#xff09;方法&#xff0c;而CreateHostBuilder&#xff08;&#xff09;返回了IHostBuilder&#xff0c;IHostBuilder就是应用程序启动的…