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-1TIM_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;
}
相关文章:
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) #defi…...
从0开始学PHP面向对象内容之常用设计模式(适配器,桥接,装饰器)
二,结构型设计模式 上两期咱们讲了创建型设计模式,都有 单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式五个设计模式。 这期咱们讲结构型设计模式 1、适配器模式(Adapter) …...
玩转数字与运算:用C语言实现24点游戏的扑克牌魅力
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
前端入门之VUE--基础与核心
前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。 Vue学习笔记 用于构建用户界面的渐进式框架 构建用户界面:基于数据动态渲染页面渐进式:循序渐近的学…...
logback 初探学习
logback 三大模块 记录器(Logger)、追加器(Appender)和布局(Layout) 配置文件外层最基本的标签如图示 xml中定义的就是这个三个东西下面进入学习 包引入参考springboot 官方文档 Logging :: Spring Boo…...
在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的?
大家好,我是锋哥。今天分享关于【在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的?】面试题。希望对大家有帮助; 在Elasticsearch中,是怎么根据一个词找到对应的倒排索引的? 在 Elasticsearch 中…...
1992-2021年 各省市县经过矫正的夜间灯光数据(GNLD、VIIRS)区域汇总:省份、城市、区县面板数据
1992-2021年 各省市县经过矫正的夜间灯光数据(GNLD、VIIRS)区域汇总:省份、城市、区县面板数据 .r.rar https://download.csdn.net/download/2401_84585615/90001905 从1992年至2021年,中国各省份、城市及区县的夜间灯光数据经过…...
linux实战-黑链——玄机靶场
黑链的特征: 隐藏链接:黑链通常隐藏在网站页面中,使用CSS、JavaScript或其他手段使其对普通用户不可见,但仍然能被搜索引擎爬虫检测到。恶意内容:这些链接指向的内容可能包含恶意软件、钓鱼页面或其他不良内容&#x…...
鸿蒙NEXT开发案例:字数统计
【引言】 本文将通过一个具体的案例——“字数统计”组件,来探讨如何在鸿蒙NEXT框架下实现这一功能。此组件不仅能够统计用户输入文本中的汉字、中文标点、数字、以及英文字符的数量,还具有良好的用户界面设计,使用户能够直观地了解输入文本…...
uniapp vue2项目迁移vue3项目
uniapp vue2项目迁移vue3项目,必须适配的部分 一、main.js 创建应用实例 // 之前 - Vue 2 import Vue from vue import App from ./App Vue.config.productionTip false // vue3 不再需要 App.mpType app // vue3 不再需要 const app new Vue({ ...App }) …...
16.C++STL 3(string类的模拟,深浅拷贝问题)
⭐本篇重点:string类的模拟,自己实现一个简单的string类 ⭐本篇代码:c学习/05.string类的学习 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) 目录 一. 经典string类的模拟 1.1 深浅拷贝问题 1.2 使用深拷贝完成经典string类的…...
神经网络10-Temporal Fusion Transformer (TFT)
Temporal Fusion Transformer (TFT) 是一种专为时序数据建模而设计的深度学习模型,它结合了Transformer架构和其他技术,旨在有效地处理和预测时序数据中的复杂模式。TFT 于 2020 年由 Google Research 提出,旨在解决传统模型在时序预测中的一…...
“iOS profile文件与私钥证书文件不匹配”总结打ipa包出现的问题
目录 文件和证书未加载或特殊字符问题 证书过期或Profile文件错误 确认开发者证书和私钥是否匹配 创建证书选择错误问题 申请苹果 AppId时勾选服务不全问题 总结 在上线ios平台的时候,在Hbuilder中打包遇见了问题,生成ipa文件时候,一…...
《图像梯度与常见算子全解析:原理、用法及效果展示》
简介:本文深入探讨图像梯度相关知识,详细介绍图像梯度是像素灰度值在不同方向的变化速度,并以 “pig.JPG” 图像为例,通过代码展示如何选取图像部分区域并分析其像素值以论证图像梯度与边缘信息的关联。接着全面阐述了 Sobel 算子,…...
【c++篇】:探索c++中的std::string类--掌握字符串处理的精髓
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨文章所属专栏:c篇–CSDN博客 文章目录 前言一.std::string对象的创建二.std::string对象的访问三.std::str…...
LlamaIndex ollama 搭建本地RAG应用,建立本地知识库
目录 简介安装前的准备下载ollama创建llamaindex conda环境,为后面编码作准备 环境变量迁移ollama到其他盘运行ollama方式一方式二禁止ollama开机自启动运行第一个模型 Chatbox聊天下载Chatbox配置ollama地址和模型验证 建立自身特定知识数据搭配大语言模型创建项目…...
draggable的el-dialog实现对话框标题可以选择
请看图 这个对话框使用了el-dialog并且draggable属性设置成了true,所以标题栏这里就可以拖动,现在用户想选中标题栏的文本进而复制。我看到这个需求头都大了。 我能想到的方案有三个:1. 取消draggable为true 2. 标题文案后面加一个复制按钮 …...
2024年Android面试总结
2024年Android面试总结 1.动画类型有哪些?插值器原理? 2.StringBuffer和StringBuilder区别? 3.jvm内存模型? 4.线程池7大核心参数及原理? 5.Android多进程通信方式有哪些?各自的优缺点? 6…...
树莓派3:64位系统串口(UART)使用问题的解决方法
前言 当我们要使用串口进行zigbee的短距离通信时,发现无法使用串口. 原因 树莓派3bCPU内部有两个串口,一个硬件串口(就是我们平时使用的UART),还有一个迷你串口(mini-uart),在老版本的树莓派中把硬件串口分配在GPIO上,可以单独使用.但是在新的树莓派中官方把硬件串口给了蓝牙…...
SemiDrive E3 硬件设计系列---唤醒电路设计
一、前言 E3 系列芯片是芯驰半导体高功能安全的车规级 MCU,对于 MCU 的硬件设计部分,本系列将会分模块进行讲解,旨在介绍 E3 系列芯片在硬件设计方面的注意事项与经验,本文主要讲解 E3 硬件设计中唤醒电路部分的设计。 二、RTC 模…...
无敏感信息下的机器学习公平性:两大前沿框架与工程实践
1. 机器学习公平性:从理论到无人口统计信息的实战在算法决策日益渗透到信贷审批、司法风险评估、招聘筛选等关键社会领域的今天,一个尖锐的问题浮出水面:我们如何确保这些“智能”系统不成为偏见与歧视的放大器?机器学习公平性&am…...
硕士论文写作的技巧有哪些?
先说一句过来人的大实话:硕士论文拼的不是“会不会写”,而是“会不会少走弯路”。因为很多人不是不会写。是:方向选错了框架搭歪了方法乱用了导师意见没听懂写到最后推倒重来这才最伤。真有用的技巧,我讲点实战的。1. 选题别贪大&…...
如何免费实现NVIDIA显卡专业级色彩校准:novideo_srgb终极指南
如何免费实现NVIDIA显卡专业级色彩校准:novideo_srgb终极指南 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/novideo_srgb…...
Unity中Newtonsoft.Json三种安装方式深度对比
1. 为什么Unity项目里装个Json库要纠结三天?——从一次崩溃说起Newtonsoft.Json,也就是大家常说的Json.NET,在C#生态里几乎是序列化的代名词。但放到Unity里,它却是个“熟悉的陌生人”:你写惯了JsonConvert.SerializeO…...
微信小程序逆向:基于Frida Hook WeChatAppHost.dll解密wxapkg
1. 这不是“破解”,而是一次对微信小程序加载机制的逆向观察WeChatAppHost.dll 是 Windows 版微信客户端中承载小程序运行环境的核心动态链接库,它不对外公开接口,也不提供调试符号,但却是所有小程序资源加载、解密、注入与执行的…...
如何在浏览器中高效使用微信网页版?wechat-need-web完整实用指南
如何在浏览器中高效使用微信网页版?wechat-need-web完整实用指南 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 想要在浏览器中稳定使用微…...
Mermaid Live Editor:为什么每个开发者都需要这个实时图表编辑神器?
Mermaid Live Editor:为什么每个开发者都需要这个实时图表编辑神器? 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trendin…...
JMeter梯度压测:精准定位系统可扩展性边界
1. 为什么“梯度式压测”不是加个线程组就完事了?很多人第一次打开JMeter,照着教程建个线程组、加个HTTP请求、跑个聚合报告,看到TPS从200涨到800就以为“压测完成了”。结果上线后流量一上来,服务直接503,监控里CPU没…...
量子态编码:从指数级瓶颈到线性复杂度的高效实现
1. 量子态编码:从理论瓶颈到工程实践在量子计算领域,尤其是量子机器学习和量子优化算法中,我们常常面临一个看似基础却至关重要的挑战:如何将经典数据高效地“加载”到量子态中?这个过程被称为量子态编码或数据加载。对…...
81、CAN总线基础回顾:从诞生到经典架构
CAN总线基础回顾:从诞生到经典架构 去年冬天,我在调试一台农用机械的ECU通信时,遇到一个诡异现象:发动机转速数据偶尔跳变到65535,仪表盘直接显示“—”。用示波器抓波形,CAN_H和CAN_L的差分信号在总线空闲时居然有0.3V的直流偏置。排查了三天,最后发现是终端电阻焊盘虚…...
