GPIOLED配置、key、中断NVIC配置
#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配置的更多相关文章
- STM32 NVIC配置详解
例程: /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ...
- NVIC配置中的分组详解
在配置优先级的时候,要注意一个很重要的问题,中断种类的数量. NVIC只可以配置 16 种 中断向量的优先级,也就是说,抢占优先级和响应优先 级的数量由一个 4 位的数字来决定, 把这个 4 位数字的 ...
- Stm32CubeMX5 配置 外部中断
实验使用连接PA8引脚的按键触发中断,外部中断使用双边沿触发,这样就可以检测按键按下与松开,当按键按下时点亮LED, 当按键松开是关闭LED,在中断服务函数中只置位相应的标志,在main函数中具体处理 ...
- 在线配置热加载配置 go-kratos.dev 监听key
paladin https://v1.go-kratos.dev/#/config-paladin example Service(在线配置热加载配置) # service.go type Servi ...
- .NET Core采用的全新配置系统[1]: 读取配置数据
提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个文 ...
- .NET Core采用的全新配置系统[7]: 将配置保存在数据库中
我们在<聊聊默认支持的各种配置源>和<深入了解三种针对文件(JSON.XML与INI)的配置源>对配置模型中默认提供的各种ConfigurationSource进行了深入详尽的 ...
- 两种交换机配置模式,以配置基于端口划分的VLAN为例
关于交换机的配置模式,大体上可以分为两类:其一以CISCO交换机为代表的配置模式,其二以Huawei.H3C交换机为代表的配置模式.其实这两种配置模式并没有本质的不同,只是配置的命令名称和配置方式存在 ...
- apache 虚拟主机详细配置:http.conf配置详解
apache 虚拟主机详细配置:http.conf配置详解 Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd. ...
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(三):配置ActiveXForm运行环境
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
随机推荐
- C和C++ 中的const
C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码: #include <iost ...
- Controller中方法返回值其他类型需要添加jackson依赖
第一个 第二个: 第三个 https://www.cnblogs.com/codejackanapes/p/5569013.html:json的博客园 springmvc默认的是:2.Jackson: ...
- JAVA,字符串替换
package l515; //例5.15 //字符串替换 public class NewStr { public static void main(String[] args) { String ...
- 让simplejson支持datetime类型的序列化
simplejson是Python的一个json包,但是觉得有点不爽,就是不能序列化datetime,稍作修改就可以了: 原文:http://blog.csdn.net/hong201/article ...
- 我的第一个Java程序和Java简介
public calss HelloWorld{ public static void main(String[] args){ System.out.println("Hello Worl ...
- .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服务
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...
- 新的表格展示利器 Bootstrap Table Ⅰ
1.bootstrap table简介及特征 Bootstrap Table是国人开发的一款基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选.多选.排序.分 ...
- P2860 [USACO06JAN]冗余路径Redundant Paths
题解: 首先要边双缩点这很显然 然后变成树上问题 发现dp,dfs好像不太对 考虑一下度数 发现只要在度数为1的点之间连边 但我好像不太会证明这个东西.. 网上也没有看到比较正确的证明方法和连边策略. ...
- scrapy中输出中文保存中文
1.json文件中文解码: #!/usr/bin/python #coding=utf-8 #author=dahu import json with open('huxiu.json','r') a ...
- Asp.net MVC - 使用PRG模式(附源码)
阅读目录: 一. 传统的Asp.net页面问题 二.Asp.net MVC中也存在同样的问题 三.使用PRG模式 四.PRG模式在MVC上的实现 一. 传统的Asp.net页面问题 一个传统的Asp. ...