#include "stm32f10x.h"
#include "stm32f10x_gpio.h" //内核,(NVIC)
#include "misc.h" //点亮红色灯 PB5
//step1:使能
Rcc_APB2PeriPhClockCmd(
Rcc_APB2PeriPh_GPIOB,ENABLE);
//step2:定义GPIO初始化结构体变量
GPIO_InitTypeDef a;
a.GPIO_Speed = GPIO_Speed_50MHz;
a.GPIO_Pin = GPIO_Pin_5;
//推挽输出
a.GPIO_Mode = GPIO_Mode_OUT_PP;
//step3:调用GPIO初始化函数
GPIO_Init(GPIOB,&a);
//step4:设置PB5为低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_5); //读取引脚的电平
int i = GPIO_ReadDataInputBit(
GPIOB,GPIO_Pin_5); /*按键初始化*/
Rcc_APB2PeriPhClockCmd(
Rcc_APB2PeriPh_GPIOA,ENABLE);
//step2:定义GPIO初始化结构体变量
GPIO_InitTypeDef a;
a.GPIO_Speed = GPIO_Speed_50MHz;
a.GPIO_Pin = GPIO_Pin_0;
//浮空输入
a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
//step3:调用GPIO初始化函数
GPIO_Init(GPIOA,&a); /*循环读取按键 PA0*/
while(){
int i = GPIO_ReadDataInputBit(
GPIOB,GPIO_Pin_5);
if(i == ){
//按键按下,点亮LED
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}else{
//松开,熄灭灯
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
}
while(){
if(GPIO_ReadDataInputBit(
GPIOA,GPIO_Pin_0) == ){
//按键按下进入这里执行
if(GPIO_ReadDataInputBit(
GPIOB,GPIO_Pin_5) == ){
//每按一次,灯的状态反转
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}else{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
}
} /*NVIC*/
//step1:优先级分组
NVIC_PriorityGroupConfig(
NVIC_PriorityGroup_1;
);
//step2:NVIC初始化结构体
NVIC_InitTypeDef b;
//中断源
b.NVIC_IRQChannel = EXTI0_IRQn;
//抢占优先级
b.NVIC_IRQChannelPreemptionPriority = ;
//子优先级
b.NVIC_IRQChannelSubPriority = ;
//使能
b.NVIC_IRQChannelCmd = ENABLE;
//step3:NVIC初始化函数
NVIC_Init(&b); //中断处理函数
void 中断名_IRQHandler(){
}
void EXTI0_IRQHandler(){ }
 #include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_exti.h" //内核,(NVIC)
#include "misc.h" //点亮红色灯 PB5
//step1:使能
Rcc_APB2PeriPhClockCmd(
Rcc_APB2PeriPh_GPIOB,ENABLE);
//step2:定义GPIO初始化结构体变量
GPIO_InitTypeDef a;
a.GPIO_Speed = GPIO_Speed_50MHz;
a.GPIO_Pin = GPIO_Pin_5;
//推挽输出
a.GPIO_Mode = GPIO_Mode_OUT_PP;
//step3:调用GPIO初始化函数
GPIO_Init(GPIOB,&a);
//step4:设置PB5为低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_5); //读取引脚的电平
int i = GPIO_ReadDataInputBit(
GPIOB,GPIO_Pin_5); /*按键初始化*/
Rcc_APB2PeriPhClockCmd(
Rcc_APB2PeriPh_GPIOA,ENABLE);
//step2:定义GPIO初始化结构体变量
GPIO_InitTypeDef a;
a.GPIO_Speed = GPIO_Speed_50MHz;
a.GPIO_Pin = GPIO_Pin_0;
//浮空输入
a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
//step3:调用GPIO初始化函数
GPIO_Init(GPIOA,&a); /*循环读取按键 PA0*/
while(){
int i = GPIO_ReadDataInputBit(
GPIOB,GPIO_Pin_5);
if(i == ){
//按键按下,点亮LED
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}else{
//松开,熄灭灯
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
}
while(){
if(GPIO_ReadDataInputBit(
GPIOA,GPIO_Pin_0) == ){
//按键按下进入这里执行
if(GPIO_ReadDataInputBit(
GPIOB,GPIO_Pin_5) == ){
//每按一次,灯的状态反转
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}else{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
}
} /*NVIC*/
//step1:优先级分组
NVIC_PriorityGroupConfig(
NVIC_PriorityGroup_1;
);
//step2:NVIC初始化结构体
NVIC_InitTypeDef b;
//中断源
b.NVIC_IRQChannel = EXTI0_IRQn;
//抢占优先级
b.NVIC_IRQChannelPreemptionPriority = ;
//子优先级
b.NVIC_IRQChannelSubPriority = ;
//使能
b.NVIC_IRQChannelCmd = ENABLE;
//step3:NVIC初始化函数
NVIC_Init(&b); //中断处理函数
void 中断名_IRQHandler(){
} void EXTI0_IRQHandler(){ } /*外部中断配置*/
//外部中断结构体
EXTI_InitTypeDef c;
c.EXTI_Line = EXTI_Line0;
c.EXTI_Mode = EXTI_Mode_Interrupt;
c.EXTI_Trigger = EXTI_Trigger_Rising;
c.EXTI_LineCmd = ENABLE;
//外部中断初始化函数
EXTI_Init(&c); //配置外部中断的触发引脚
GPIO_EXTILineConfig(
GPIOPortSourceGPIOC,GPIOPinSourcePin0
);
Rcc_APB2PeriPhClockCmd(
Rcc_APB2PeriPh_GPIOC,ENABLE);
GPIO_InitTypeDef a;
a.GPIO_Speed = GPIO_Speed_50MHz;
a.GPIO_Pin = GPIO_Pin_0;
//浮空输入
a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOC,&a); void EXTI0_IRQHandler(){
GPIO_ResetBits(GPIOB,GPIO_Pin_5); 手动把中断标志位清零
EXTI_ClearITPendingBit(EXTI_Line0);
}

GPIOLED配置、key、中断NVIC配置的更多相关文章

  1. STM32 NVIC配置详解

    例程:  /* Configure one bit for preemption priority */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ...

  2. NVIC配置中的分组详解

    在配置优先级的时候,要注意一个很重要的问题,中断种类的数量. NVIC只可以配置 16 种 中断向量的优先级,也就是说,抢占优先级和响应优先 级的数量由一个 4 位的数字来决定, 把这个 4 位数字的 ...

  3. Stm32CubeMX5 配置 外部中断

    实验使用连接PA8引脚的按键触发中断,外部中断使用双边沿触发,这样就可以检测按键按下与松开,当按键按下时点亮LED, 当按键松开是关闭LED,在中断服务函数中只置位相应的标志,在main函数中具体处理 ...

  4. 在线配置热加载配置 go-kratos.dev 监听key

    paladin https://v1.go-kratos.dev/#/config-paladin example Service(在线配置热加载配置) # service.go type Servi ...

  5. .NET Core采用的全新配置系统[1]: 读取配置数据

    提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个文 ...

  6. .NET Core采用的全新配置系统[7]: 将配置保存在数据库中

    我们在<聊聊默认支持的各种配置源>和<深入了解三种针对文件(JSON.XML与INI)的配置源>对配置模型中默认提供的各种ConfigurationSource进行了深入详尽的 ...

  7. 两种交换机配置模式,以配置基于端口划分的VLAN为例

    关于交换机的配置模式,大体上可以分为两类:其一以CISCO交换机为代表的配置模式,其二以Huawei.H3C交换机为代表的配置模式.其实这两种配置模式并没有本质的不同,只是配置的命令名称和配置方式存在 ...

  8. apache 虚拟主机详细配置:http.conf配置详解

    apache 虚拟主机详细配置:http.conf配置详解 Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd. ...

  9. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(三):配置ActiveXForm运行环境

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

随机推荐

  1. python调用PHP方法

    PHP代码如下:<?php $method = $argv[1]; $param1 = $argv[2]; $param2 = $argv[3]; if(isset($method) & ...

  2. AI-序列化-查-做接口

    序列化最终代码(下边的可以不看) from rest_framework.views import APIView from rest_framework import serializers fro ...

  3. 充分认识Mysql

    使用开源产品是一种潮流.在使用之前,我们首先需要对Mysql 有一定的了解,特别是Mysql 的缺点.只有了解其缺点后,我们才知道,能不能真正的应用到我们的业务场景中去. 2.1 Mysql 数据库简 ...

  4. 从零开始 DOM操作 笔记

        <div id="box" class="box"></div>   --> var myBox = document.g ...

  5. HDU 1075 What Are You Talking About (stl之map映射)

    What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K ...

  6. Linux进程管理工具

    Linux进程管理工具 Htop yum install htop 参考帮助: http://blog.csdn.net/skh2015java/article/details/53173896 Li ...

  7. 处理OSS上传失败一例

    问题描述: 上传oss云存储,无法成功,报错: 2019-01-29 17:44:59,552 oss2.api [ERROR] 140080008111872 : Exception: {'stat ...

  8. Redis 学习手册

    一:Redis的简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包 ...

  9. MongDb介绍及简单实用

       一:介绍       MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C ...

  10. 小甲鱼python基础教程飞机大战源码及素材

    百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取. 下载