STM32F10x 定时器

使用定时器实现:B5 E5的开关

添加相关的.h路径文件

添加相关的.c配置文件

led.h文件        用于声明LED函数

#ifndef __LED_H            //没有定义__LED_H
#define __LED_H            //就定义__LED_H

#define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5)
#define LED1_OFF GPIO_SetBits(GPIOB,GPIO_Pin_5)

#define LED2_ON GPIO_ResetBits(GPIOE,GPIO_Pin_5)
#define LED2_OFF GPIO_SetBits(GPIOE,GPIO_Pin_5)

//里面放宏定义 函数申明
void LED_Lnit(void);

#endif

led.c文件        主要用于LED灯的配置

#include "stm32f10x.h"
#include "led.h"


void LED_Lnit(){
        //定义结构体变量
    GPIO_InitTypeDef GPIO_Initx;
    //打开GPIOB 5的时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
    //给结构体变量的属性的属性的值
    GPIO_Initx.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Initx.GPIO_Pin = GPIO_Pin_5;
    GPIO_Initx.GPIO_Speed = GPIO_Speed_50MHz;
    
    
    //设置B5为推挽输出
    GPIO_Init(GPIOB,&GPIO_Initx);
    GPIO_Init(GPIOE,&GPIO_Initx);
    
}

tim.h文件        //用于声明定时器的函数

#ifndef __TIM_H
#define __TIM_H


#include "stm32f10x.h"
void Tim_init(u16 arr,u16 psc);

#endif

tim.c文件        用于配置定时器

#include "stm32f10x.h"
#include "led.h"

void Tim_init(u16 arr,u16 psc){
    
    TIM_TimeBaseInitTypeDef Tim2;
    NVIC_InitTypeDef NVIC_Initx;
    //1、开启定时器2时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);    //开启TIM2时钟
    
    //2、定时器初始化
    Tim2.TIM_Period = arr;    //自动装载值    装载值10000-1
    Tim2.TIM_CounterMode=TIM_CounterMode_Up;    //计数模式 向上计数
    Tim2.TIM_ClockDivision=TIM_CKD_DIV1;    //时钟分割是输入捕获用的,故这里随便给
    Tim2.TIM_Prescaler=psc;    //预分频值        7200-1

    TIM_TimeBaseInit(TIM2,&Tim2);    
    //3、打开更新中断
    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);    //此处有中断

    //4、优先级    有中断就有中断优先级
    NVIC_Initx.NVIC_IRQChannel = TIM2_IRQn;    //配置目标:中断线0
    NVIC_Initx.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Initx.NVIC_IRQChannelPreemptionPriority = 1;        //设置抢占优先级
    NVIC_Initx.NVIC_IRQChannelSubPriority = 2;                        //设置响应优先级
    NVIC_Init(&NVIC_Initx);
    
    
    //5、启动定时器
    TIM_Cmd(TIM2,ENABLE);
}


//构建中断服务函数,在.s启动文件中找
void TIM2_IRQHandler()
{
    //交替闪烁    
    //如果B5输出为1 则B5输出为0 E5输出1
    if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5))
    {
        LED1_ON;
        LED2_OFF;
    }
    else    //如果B5输出为0 则B5输出为1 E5输出0
    {
        LED2_ON;
        LED1_OFF;
    }
    //                否则B5输出为1 E5输出为0
    
    //清除中断标记位        如何已经触发过来,再次使用不清除就一直是触发过后的高电平
    TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}

 

main.c文件 

#include "stm32f10x.h"
#include "led.h"
#include "tim.h"

int main()
{
    //中断分组
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

    LED_Lnit();    //配置IO程序
    Tim_init(9999,7199);
    //编写程序功能
    while(1){;
    //当前程序没有其他功能
    }
    return 0;
}
 

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

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

相关文章

shell脚本基础学习_总结篇(完结)

细致观看可以,访问shell脚本学习专栏,对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义: 2. 主要特点: 3. shell脚本的基本结构 4. S…

Linux创建免密登陆(错误:Permission denied (publickey,gssapi-keyex,gssapi-with-mic))

报错截图 解决方法 1. mkdir -p ~/.ssh 2. chmod 700 ~/.ssh 3. ssh-keygen,一直回车 4. chmod 600 /root/.ssh/id_rsa 5. 将公钥内容追加到服务器上,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 6. chmod 600 ~/.ssh/authorized_keys…

低代码平台在医疗/医院行业应用案例与优势介绍

随着医疗行业的不断发展,数字化管理的需求日益迫切。传统的医疗信息化管理系统开发往往面临着成本高、周期长、定制性差等问题。在这个数字化转型的浪潮下,低代码平台应运而生,为医院快速搭建高效、灵活的医疗信息化管理系统提供了全新的解决…

在 Spring Boot 中构造 API 响应的最佳实践

在平时的开发和项目中,我们一定会涉及到接口对接的功能,由于不同开发人员的编码习惯不同,API报文在项目中通常是"百花齐放"的。 不但增加工作难度,往往也是扯皮的大头,如果能统一报文格式,不但能…

多目标优化算法——多目标粒子群优化算法(MOPSO)

Handling Multiple Objectives With Particle Swarm Optimization(多目标粒子群优化算法) 一、摘要: 本文提出了一种将帕累托优势引入粒子群优化算法的方法,使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…

OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:分享|16个含源码和数据集的计算机视觉实战项目 本文将分享16个含源码和数据集的计算机视觉实战项目。具体包括: 1. 人…

Jenkins升级到最新版本后无法启动

1. 场景还原 最近在web界面将jenkins升级到最新版本后,后台无法启动jenkins服务,服务状态如下: 运行jenkins命令提示invalid Java version jenkins --version jenkins: invalid Java version: java version "1.8.0_202" Java(TM)…

【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函数

引言 自动检测图像中的圆形或圆形对象,并可视化检测到的圆形。 函数详解 imfindcircles imfindcircles是MATLAB中的一个函数,用于在图像中检测并找出圆形区域。 基本语法: [centers, radii] imfindcircles(A, radiusRange) [centers, r…

鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起

【效果】 元服务链接格式(API>12适用):https://hoas.drcn.agconnect.link/ggMRM 生成二维码后效果: 【参考网址】 使用App Linking实现元服务跳转:文档中心 草料二维码:草料二维码生成器 【引言】 …

下载安装Android Studio

(一)Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english ![](https://i-blog.csdnimg.cn/direct/b7052b434f9d4418b9d56c66cdd59fae.png 等待一会,出现 点同意后&#xff0…

【C/C++】深入解析 Stack 与 Queue 数据结构(详解):实现原理、应用场景与性能优化

文章目录 引言栈(Stack)数据结构详解1. 栈的基本概念2. 栈的实现原理3. C中的栈实现4. 栈的应用场景5. 栈的性能分析6. 实战示例:括号匹配 队列(Queue)数据结构详解1. 队列的基本概念2. 队列的实现原理3. C中的队列实现…

【css实现收货地址下边的平行四边形彩色线条】

废话不多说&#xff0c;直接上代码&#xff1a; <div class"address-block" ><!-- 其他内容... --><div class"checked-ar"></div> </div> .address-block{height:120px;position: relative;overflow: hidden;width: 500p…

从零开始配置Qt+VsCode环境

从零开始配置QtVsCode环境 文章目录 从零开始配置QtVsCode环境写在前面扩展安装及配置Qt Configure配置 VsCode创建Qt工程VsCodeQMakeMinGwVsCodeQMakeMsvcVsCodeCMakeMinGwVsCodeCMakeMsvcQtCreatorQMakeMinGw->VsCodeQtCreatorQMakeMsvc->VsCodeQtCreatorCMakeMinGw-&g…

【前端】JavaScript中的字面量概念与应用详解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;字面量1. 数字字面量2. 字符串字面量3. 布尔字面量4. 空值字面量&#xff08;null&#xff09;5. 对象字面量6. 数组字面量7. 正则表达式字面量8. 特殊值字面量9. 函数字…

Python使用ffmpeg进行本地视频拉流,并使用训练模型识别人脸,并将识别后的模型推流源码

前言&#xff1a; Windows上搭建nginx-rtsp流媒体服务器&#xff0c;实现FFmpeg推流、录像转rtsp推流 - WayWayWayne - 博客园参考上述文章和一些webRTC前端拉流文章 主要是缕一缕思路和每个部分的代码功能&#xff0c;文件命名高度相似导致。 效果&#xff1a; 代码&#x…

【去毛刺】OpenCV图像处理基础:腐蚀与膨胀操作入门

在数字图像处理中&#xff0c;形态学操作是一种常用的技术&#xff0c;用于提取图像中的特定形状或特征。其中&#xff0c;腐蚀&#xff08;Erosion&#xff09;和膨胀&#xff08;Dilation&#xff09;是两种基本的形态学运算。本文将通过一个简单的例子来演示如何使用Python中…

2024年11月27日Github流行趋势

项目名称&#xff1a;screenshot-to-code 项目维护者&#xff1a;abi clean99 sweep-ai kachbit vagusX项目介绍&#xff1a;通过上传截图将其转换为整洁的代码&#xff08;支持HTML/Tailwind/React/Vue&#xff09;。项目star数&#xff1a;62,429项目fork数&#xff1a;7,614…

Linux八股积累与笔记

1、iptables 是一个用于配置Linux内核防火墙规则的工具。四表五链&#xff1a;在iptables中&#xff0c;有四个表&#xff08;tables&#xff09;和五个链&#xff08;chains&#xff09;&#xff0c;用于管理不同类型的数据包过滤规则。如下&#xff1a; 表&#xff08;Tabl…

Qt5.14.2的安装与环境变量及一些依赖库的配置

目录 1.Qt5.14.2安装 2.Qt环境变量及一些依赖库的配置 1.Qt5.14.2安装 QT从入门到入土&#xff08;一&#xff09;——Qt5.14.2安装教程和VS2019环境配置 - 唯有自己强大 - 博客园 2.Qt环境变量及一些依赖库的配置 假设QT安装目录为: D:\Qt\Qt5.14.2 将目录: D:\Qt\Qt5.14.…

初识Linux(4):Linux基础环境工具(下)

1. Git Git是一种版本控制系统&#xff0c;是一种工具&#xff0c;用于代码的存储和版本控制。 而我们常见的Gitee和Gitehub都是基于Git&#xff08;Git是开源的&#xff09;实现的在线代码仓库&#xff0c;而前者服务器位于中国&#xff0c;后者服务器位于美国。 总的来说&…