K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭
#include "stm32f10x.h" // 相当于51单片机中的 #include <reg51.h>
#include "stm32f10x_gpio.h"
#include "stm32f10x_exti.h"
#include "misc.h"
/*
*K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭
*/
/*GPIO、NVIC、EXTI配置*/
int peizhi()
{ /*GPIO配置*/
// K1配置 PA0
GPIO_InitTypeDef a;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
a.GPIO_Speed=GPIO_Speed_50MHz;
a.GPIO_Pin=GPIO_Pin_5;
a.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&a); /*NVIC嵌套向量中断控制器*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitTypeDef b;
b.NVIC_IRQChannel = EXTI0_IRQn;//EXTI0_IRQn外部中断线0中断
b.NVIC_IRQChannelPreemptionPriority = ;//0 1 2 3 4
b.NVIC_IRQChannelSubPriority = ;//0 1 2 3 4
b.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&b); /*外部中断EXTI配置*/
EXTI_InitTypeDef c;
c.EXTI_Line=EXTI_Line0;//外部路线0 和13
c.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式
c.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿为中断请求
c.EXTI_LineCmd=ENABLE;//使能
EXTI_Init(&c);//指向结构体EXTI_InitTypeDef的指针a GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);//选择GPIO管脚用作外部中断线路 //K2配置 PC13
//以下K2的配置基于K1配置的,就是说K2很多配置和K1相同的,只是把不同的配置写下来 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
GPIO_Init(GPIOB,&a); b.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_Init(&b); c.EXTI_Line = EXTI_Line13;
EXTI_Init(&c); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource13); } /*主函数*/
int main(void)
{
peizhi(); } /*中断服务函数*/
void EXTI0_IRQHandler(void)
{
//确保是否产生EXTI line中断
if(EXTI_GetITStatus(EXTI_Line0)!=RESET) // 检查指定的EXTI线路触发请求发生与否
{
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==)//
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
EXTI_ClearITPendingBit(EXTI_Line0);
}
} void EXTI15_10_IRQHandler(void)
{
//确保是否产生EXTI line中断
if(EXTI_GetITStatus(EXTI_Line13)!=RESET) // 检查指定的EXTI线路触发请求发生与否
{
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==)//
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
EXTI_ClearITPendingBit(EXTI_Line13);
}
}
K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭的更多相关文章
- linux中断源码分析 - 中断发生(三)
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 回顾 上篇文章linux中断源码分析 - 初始化(二)已经描述了中断描述符表和中断描述符数组的初始化,由于在初始 ...
- 【LeetCode】四数之和【排序,固定k1,k2,二分寻找k3和k4】
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...
- led指示灯电路图大全(八款led指示灯电路设计原理图详解)
led指示灯电路图大全(八款led指示灯电路设计原理图详解) led指示灯电路图(一) 图1所示电路中只有两个元件,R选用1/6--1/8W碳膜电阻或金属膜电阻,阻值在1--300K之间. Ne为氖泡 ...
- LED Decorative Light Supplier - Decorative Use Of LED Light Strips
Led strip refers to the led assembly in the ribbon of the FPC (flexible circuit board) or PCB hard b ...
- linux中断源码分析 - 软中断(四)
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 在上一篇文章中,我们看到中断实际分为了两个部分,俗称就是一部分是硬中断,一部分是软中断.软中断是专门用于处理中断 ...
- linux中断源码分析 - 初始化(二)
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本篇文章主要讲述源码中是如何对中断进行一系列的初始化的. 回顾 在上一篇概述中,介绍了几个对于中断来说非常重要的 ...
- linux中断源码分析 - 概述(一)
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 关于中断和异常 一般在书中都会把中断和异常一起说明,因为它们具有相同的特点,同时也有不同的地方.在CPU里,中断 ...
- Trap (陷入/中断) 源码解析
用户空间和内核空间之间的切换通常称为trap trap的三种形式 系统调用引发 异常发生 设备中断 (时间中断.IO中断.网络中断等) supervise mode的权限 用户态和内核态之间的到底有什 ...
- 斐讯K1 K2 开启Telnet
官方V21.4.5.5前的ROM,直接打开下边这个链接就直接开telnet了,然后就可以随便搞了 http://192.168.2.1/goform/gra_NTPSyncWithLocal?text ...
随机推荐
- vue-cli watch简单用法
创建一个vue单文件 <template> <div id="test"> <h4 @click="changeMsg()" id ...
- js call() 笔记
var ctrl = function() {}; ctrl.view = function() { return { show: function() { console.log("vie ...
- 正则表达式过滤html标签
1.说明:需要使用非贪婪模式 2.示例 过滤所有span标签: var newContent = Regex.Replace(htmlContent, "<span.*?>.*? ...
- 51 nod 1212 无向图最小生成树(Kruckal算法/Prime算法图解)
1212 无向图最小生成树 N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树. 收起 输入 第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量.(2 <= N < ...
- [转] Shell编程之数组使用
#!/bin/bash #基本数组操作a=(1 2 3) ##()表示空数组echo "第0个元素:"${a[0]}echo "所有元素: "${a[@]}ec ...
- Spring MVC基础知识整理➣国际化和异常处理
概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...
- T37302 P哥的桶
题解: 比较简单的一道题 线段树+线性基 显然离线处理出位置 然后线段树updata的时候暴力合并线性基 nlogn^3 一个常数优化就是线性基已满就直接返回这个线性基 还有个优化是用快速找到第一个1 ...
- TypeScript学习笔记 (一)基础特性
一. 字符串新特性 1. 多行字符串 var str = ``; 2. 字符串模板 var world = "world"; var str = `hello ${world}`; ...
- Python 私有属性
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-08-05 # 类 ...
- docker 安装配置
1. 安装docker 环境是ubuntu 14.04 参照: https://help.aliyun.com/document_detail/60742.html # step 1: 安装必要的一 ...