二、GD32F407VET6使用定时器点灯

零、所需文件及环境:

        1、第一章建立好的LED灯闪烁程序

        2、编译环境MDK5(KEIL5)   

        3、一个GD32F407VET6硬件

        4、一个下载器j-link 或 st-link等

        5.代码编辑器 Notepad++   (可以不要 用记事本也能编译  都是习惯的问题

壹、复制LED灯闪烁程序

1.1 复制led灯闪烁程序并进行重命名

1.2 进入USER/BSP文件夹下 复制BSP_LED文件夹改为BSP_TIMER 

1.3 打开BSP_TIMER.h修改为

#ifndef  __BSP_TIMER_H
#define  __BSP_TIMER_H

#include "gd32f4xx.h"
#include <stdio.h>

extern    void timer_config(uint16_t psc,uint32_t period);


#endif

1.3 打开BSP_TIMER.c修改为

#include "BSP_TIMER.h"
#include "BSP_LED.h"


#define BSP_TIMERx                TIMER2
#define BSP_TIMERx_IRQn           TIMER2_IRQn
#define BSP_TIMERx_Pre_Priority    2
#define BSP_TIMERx_Sub_Priority    2
#define BSP_TIMERx_IRQHandler     TIMER2_IRQHandler
#define BSP_TIMERx_CLK            RCU_TIMER2

void timer_config(uint16_t psc,uint32_t period)
{
    timer_parameter_struct timer_initpara;
 
    rcu_periph_clock_enable(BSP_TIMERx_CLK);
        
    nvic_irq_enable(BSP_TIMERx_IRQn, BSP_TIMERx_Pre_Priority, BSP_TIMERx_Sub_Priority);
 
    timer_deinit(BSP_TIMERx);
    /* initialize TIMER init parameter struct */
    timer_struct_para_init(&timer_initpara);
    /* TIMER2 configuration */
    timer_initpara.prescaler         = psc;
    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = period;
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_init(BSP_TIMERx, &timer_initpara);
 
    timer_interrupt_flag_clear(BSP_TIMERx, TIMER_INT_FLAG_UP);
    timer_interrupt_enable(BSP_TIMERx, TIMER_INT_UP);
    timer_enable(BSP_TIMERx);
}


void BSP_TIMERx_IRQHandler(void)  //TIMER2中断 500ms
{
    if(RESET != timer_interrupt_flag_get(BSP_TIMERx, TIMER_INT_FLAG_UP))
    {

            LED_Toggle();
            timer_interrupt_flag_clear(BSP_TIMERx, TIMER_INT_FLAG_UP);

    }
}

贰、打开工程,将BSP_TIMER.c添加入工程并添加头文件路径

叁、添加LED_Toggle()函数

肆、修改main函数


#include "gd32f4xx.h"
#include "systick.h"
#include <stdio.h>
#include "BSP_LED.h"
#include "BSP_TIMER.h"

int main(void)
{

    systick_config();
        nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
        LED_Init();    
        timer_config(8400-1,5000-1);//8400*5000/84M=0.5S

    LED_Init();
    
    while(1) {
            
//            LED_Open();
//            delay_1ms(500);
//            LED_Close();
//          delay_1ms(500);
    }
}

伍、编译下载运行

运行之后灯在布林布林闪,具体是不是500ms,说实话不知道,有示波器了自己去测试一下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

25w的理想L6简约民宿,15W的哪吒L拎包入住

文 | AUTO芯球 作者 | 谦行 25w买理想L6 &#xff1f; 踩坑咯&#xff01;你是没看哪吒L吧&#xff01; 哪吒是杂牌&#xff1f;兄弟&#xff01;买车要动脑子&#xff01; 你先去哪吒店里体验一下&#xff01;肠子都给你悔青&#xff01; 上有老下有小&#xff0c;要精打…

MongoDB教程(十七):MongoDB主键类型ObjectId

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、Object…

Spring AOP(2)原理(代理模式和源码解析)

目录 一、代理模式 二、静态代理 三、动态代理 1、JDK动态代理 &#xff08;1&#xff09;JDK动态代理实现步骤 &#xff08;2&#xff09;定义JDK动态代理类 &#xff08;3&#xff09;代码简单讲解 2、CGLIB动态代理 &#xff08;1&#xff09;CGLIB 动态代理类实现…

Spring系列-04-事件机制,监听器,模块/条件装配

事件机制&监听器 SpringFramework中设计的观察者模式-掌握 SpringFramework 中, 体现观察者模式的特性就是事件驱动和监听器。监听器充当订阅者, 监听特定的事件&#xff1b;事件源充当被观察的主题, 用来发布事件&#xff1b;IOC 容器本身也是事件广播器, 可以理解成观察…

ArcGIS Pro不能编辑ArcGIS10.X的注记的解决办法

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 一、问题 我们利用ArcGIS Pro编辑ArcGIS10.X系列软件生成的注记要素类的时候&#xff0c;会提示不…

FinClip 率先入驻 AWS Marketplace,加速全球市场布局

近日&#xff0c;凡泰极客旗下的小程序数字管理平台 FinClip 已成功上线亚马逊云科技&#xff08;AWS&#xff09;Marketplace。未来&#xff0c;FinClip 将主要服务于海外市场的开放银行、超级钱包、财富管理、社交电商、智慧城市解决方案等领域。 在全球市场的多样性需求推动…

KAFKA搭建教程

KAFKA搭建教程 期待您的关注 KAFKA学习笔记 帮助更多人 目录 KAFKA搭建教程 1.下载Kafka并解压 2.添加环境变量 3.修改 server.properties 文件 4.将kafka复制到其它节点 5.修改node1、node2节点的broker.id 6.将master的环境变量同步到node1、 node2 7.启动zookeeper…

Elasticsearch:评估搜索相关性 - 第 1 部分

作者&#xff1a;来自 Elastic Thanos Papaoikonomou, Thomas Veasey 这是一系列博客文章中的第一篇&#xff0c;讨论如何在更好地理解 BEIR 基准的背景下考虑评估你自己的搜索系统。我们将介绍具体的技巧和技术&#xff0c;以便在更好地理解 BEIR 的背景下改进你的搜索评估流程…

17_高级进程间通信 UNIX域套接字1

非命名的UNIX域套接字 第1个参数domain&#xff0c;表示协议族&#xff0c;只能为AF_LOCAL或者AF_UNIX&#xff1b; 第2个参数type&#xff0c;表示类型&#xff0c;只能为0。 第3个参数protocol&#xff0c;表示协议&#xff0c;可以是SOCK_STREAM或者SOCK_DGRAM。用SOCK_STR…

视觉巡线小车——STM32+OpenMV(三)

目录 前言 一、OpenMV代码 二、STM32端接收数据 1.配置串口 2.接收数据并解析 总结 前言 通过视觉巡线小车——STM32OpenMV&#xff08;二&#xff09;&#xff0c;已基本实现了减速电机的速度闭环控制。要使小车能够自主巡线&#xff0c;除了能够精准的控制速度之外&#xff0…

【BUG】已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)

已解决&#xff1a;raise KeyError(key) from err KeyError: (‘name‘, ‘age‘) 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xf…

第十课:telnet(远程登入)

如何远程管理网络设备&#xff1f; 只要保证PC和路由器的ip是互通的&#xff0c;那么PC就可以远程管理路由器&#xff08;用telnet技术管理&#xff09;。 我们搭建一个下面这样的简单的拓扑图进行介绍 首先我们点击云&#xff0c;把云打开&#xff0c;点击增加 我们绑定vmn…

idea如何让包结构分层

文章目录 前言1.选中前项目包结构2.取消后项目包结构3.情况二 前言 在大型项目中&#xff0c;代码的分层管理至关重要。IDEA编辑器提供了强大的package分层结构功能&#xff0c;帮助开发者更好地组织和管理代码。通过合理配置&#xff0c;我们可以清晰地看到各个package之间的…

【BUG】已解决:java.lang.reflect.InvocationTargetException

已解决&#xff1a;java.lang.reflect.InvocationTargetException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发…

Mysql-索引结构

一.什么是索引&#xff1f; 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引 二.无索引的情况 找到…

【效率提升】程序员常用Shell脚本

文章目录 常用Shell脚本一. 定期更新分区数据二、获取系统资源的使用情况 常用Shell脚本 一. 定期更新分区数据 在某些场景下&#xff0c;我们需要对N年前某一分区的数据进行删除&#xff0c;并添加今年该对应分区的数据&#xff0c;实现数据的流动式存储。 #!/bin/bash dt$…

NFT革命:数字资产的确权、营销与元宇宙的未来

目录 1、NFT&#xff1a;数字社会的数据确权制度 2、基于低成本及永久产权的文化发现 3、PFP&#xff1a;从“小图片”到“身份表达”&#xff0c;再到社区筛选 4、透明表达&#xff1a;NFT 在数字化营销中的商业价值 5、可编程性&#xff1a;赋予 NFT 无限可能的应用 5.…

微信被好友屏蔽朋友圈/拉黑/删除?教你几招悄悄验证

微信这一国民级的社交软件&#xff0c;基本上渗入了大家日常生活的方方面面&#xff0c;沟通、支付、购物、娱乐都可以在上面一站式解决。微信功能虽然很全面&#xff0c;但某些功能细节设计也会让人感到困惑&#xff0c;比如我们被朋友拉黑或者删除&#xff0c;微信是不会通知…

C程序优化与指针传址

最近在写程序时遇到了一些问题&#xff0c;记录一下&#xff1a; 开始程序使用全局变量&#xff0c;程序如下&#xff1a;程序的缺点是全局变量的泛滥。 笔者觉得有些不妥&#xff0c;于是将它修改成这样&#xff1a; 使用结构体进行封装&#xff0c;避免了全局变量&#xff0…

Gitee使用教程2-克隆仓库(下载项目)并推送更新项目

一、下载 Gitee 仓库 1、点击克隆-复制代码 2、打开Git Bash 并输入复制的代码 下载好后&#xff0c;找不到文件在哪的可以输入 pwd 找到仓库路径 二、推送更新 Gitee 项目 1、打开 Git Bash 用 cd 命令进入你的仓库&#xff08;我的仓库名为book&#xff09; 2、添加文件到 …