1. #include "stm32f10x.h"
  2. #include "stm32f10x_gpio.h"
  3.  
  4. //内核,(NVIC)
  5. #include "misc.h"
  6.  
  7. //点亮红色灯 PB5
  8. //step1:使能
  9. Rcc_APB2PeriPhClockCmd(
  10. Rcc_APB2PeriPh_GPIOB,ENABLE);
  11. //step2:定义GPIO初始化结构体变量
  12. GPIO_InitTypeDef a;
  13. a.GPIO_Speed = GPIO_Speed_50MHz;
  14. a.GPIO_Pin = GPIO_Pin_5;
  15. //推挽输出
  16. a.GPIO_Mode = GPIO_Mode_OUT_PP;
  17. //step3:调用GPIO初始化函数
  18. GPIO_Init(GPIOB,&a);
  19. //step4:设置PB5为低电平
  20. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  21.  
  22. //读取引脚的电平
  23. int i = GPIO_ReadDataInputBit(
  24. GPIOB,GPIO_Pin_5);
  25.  
  26. /*按键初始化*/
  27. Rcc_APB2PeriPhClockCmd(
  28. Rcc_APB2PeriPh_GPIOA,ENABLE);
  29. //step2:定义GPIO初始化结构体变量
  30. GPIO_InitTypeDef a;
  31. a.GPIO_Speed = GPIO_Speed_50MHz;
  32. a.GPIO_Pin = GPIO_Pin_0;
  33. //浮空输入
  34. a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  35. //step3:调用GPIO初始化函数
  36. GPIO_Init(GPIOA,&a);
  37.  
  38. /*循环读取按键 PA0*/
  39. while(){
  40. int i = GPIO_ReadDataInputBit(
  41. GPIOB,GPIO_Pin_5);
  42. if(i == ){
  43. //按键按下,点亮LED
  44. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  45. }else{
  46. //松开,熄灭灯
  47. GPIO_SetBits(GPIOB,GPIO_Pin_5);
  48. }
  49. }
  50. while(){
  51. if(GPIO_ReadDataInputBit(
  52. GPIOA,GPIO_Pin_0) == ){
  53. //按键按下进入这里执行
  54. if(GPIO_ReadDataInputBit(
  55. GPIOB,GPIO_Pin_5) == ){
  56. //每按一次,灯的状态反转
  57. GPIO_SetBits(GPIOB,GPIO_Pin_5);
  58. }else{
  59. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  60. }
  61. }
  62. }
  63.  
  64. /*NVIC*/
  65. //step1:优先级分组
  66. NVIC_PriorityGroupConfig(
  67. NVIC_PriorityGroup_1;
  68. );
  69. //step2:NVIC初始化结构体
  70. NVIC_InitTypeDef b;
  71. //中断源
  72. b.NVIC_IRQChannel = EXTI0_IRQn;
  73. //抢占优先级
  74. b.NVIC_IRQChannelPreemptionPriority = ;
  75. //子优先级
  76. b.NVIC_IRQChannelSubPriority = ;
  77. //使能
  78. b.NVIC_IRQChannelCmd = ENABLE;
  79. //step3:NVIC初始化函数
  80. NVIC_Init(&b);
  81.  
  82. //中断处理函数
  83. void 中断名_IRQHandler(){
  84. }
  85. void EXTI0_IRQHandler(){
  86.  
  87. }
  1. #include "stm32f10x.h"
  2. #include "stm32f10x_gpio.h"
  3. #include "stm32f10x_exti.h"
  4.  
  5. //内核,(NVIC)
  6. #include "misc.h"
  7.  
  8. //点亮红色灯 PB5
  9. //step1:使能
  10. Rcc_APB2PeriPhClockCmd(
  11. Rcc_APB2PeriPh_GPIOB,ENABLE);
  12. //step2:定义GPIO初始化结构体变量
  13. GPIO_InitTypeDef a;
  14. a.GPIO_Speed = GPIO_Speed_50MHz;
  15. a.GPIO_Pin = GPIO_Pin_5;
  16. //推挽输出
  17. a.GPIO_Mode = GPIO_Mode_OUT_PP;
  18. //step3:调用GPIO初始化函数
  19. GPIO_Init(GPIOB,&a);
  20. //step4:设置PB5为低电平
  21. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  22.  
  23. //读取引脚的电平
  24. int i = GPIO_ReadDataInputBit(
  25. GPIOB,GPIO_Pin_5);
  26.  
  27. /*按键初始化*/
  28. Rcc_APB2PeriPhClockCmd(
  29. Rcc_APB2PeriPh_GPIOA,ENABLE);
  30. //step2:定义GPIO初始化结构体变量
  31. GPIO_InitTypeDef a;
  32. a.GPIO_Speed = GPIO_Speed_50MHz;
  33. a.GPIO_Pin = GPIO_Pin_0;
  34. //浮空输入
  35. a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  36. //step3:调用GPIO初始化函数
  37. GPIO_Init(GPIOA,&a);
  38.  
  39. /*循环读取按键 PA0*/
  40. while(){
  41. int i = GPIO_ReadDataInputBit(
  42. GPIOB,GPIO_Pin_5);
  43. if(i == ){
  44. //按键按下,点亮LED
  45. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  46. }else{
  47. //松开,熄灭灯
  48. GPIO_SetBits(GPIOB,GPIO_Pin_5);
  49. }
  50. }
  51. while(){
  52. if(GPIO_ReadDataInputBit(
  53. GPIOA,GPIO_Pin_0) == ){
  54. //按键按下进入这里执行
  55. if(GPIO_ReadDataInputBit(
  56. GPIOB,GPIO_Pin_5) == ){
  57. //每按一次,灯的状态反转
  58. GPIO_SetBits(GPIOB,GPIO_Pin_5);
  59. }else{
  60. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  61. }
  62. }
  63. }
  64.  
  65. /*NVIC*/
  66. //step1:优先级分组
  67. NVIC_PriorityGroupConfig(
  68. NVIC_PriorityGroup_1;
  69. );
  70. //step2:NVIC初始化结构体
  71. NVIC_InitTypeDef b;
  72. //中断源
  73. b.NVIC_IRQChannel = EXTI0_IRQn;
  74. //抢占优先级
  75. b.NVIC_IRQChannelPreemptionPriority = ;
  76. //子优先级
  77. b.NVIC_IRQChannelSubPriority = ;
  78. //使能
  79. b.NVIC_IRQChannelCmd = ENABLE;
  80. //step3:NVIC初始化函数
  81. NVIC_Init(&b);
  82.  
  83. //中断处理函数
  84. void 中断名_IRQHandler(){
  85. }
  86.  
  87. void EXTI0_IRQHandler(){
  88.  
  89. }
  90.  
  91. /*外部中断配置*/
  92. //外部中断结构体
  93. EXTI_InitTypeDef c;
  94. c.EXTI_Line = EXTI_Line0;
  95. c.EXTI_Mode = EXTI_Mode_Interrupt;
  96. c.EXTI_Trigger = EXTI_Trigger_Rising;
  97. c.EXTI_LineCmd = ENABLE;
  98. //外部中断初始化函数
  99. EXTI_Init(&c);
  100.  
  101. //配置外部中断的触发引脚
  102. GPIO_EXTILineConfig(
  103. GPIOPortSourceGPIOC,GPIOPinSourcePin0
  104. );
  105. Rcc_APB2PeriPhClockCmd(
  106. Rcc_APB2PeriPh_GPIOC,ENABLE);
  107. GPIO_InitTypeDef a;
  108. a.GPIO_Speed = GPIO_Speed_50MHz;
  109. a.GPIO_Pin = GPIO_Pin_0;
  110. //浮空输入
  111. a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  112. GPIO_Init(GPIOC,&a);
  113.  
  114. void EXTI0_IRQHandler(){
  115. GPIO_ResetBits(GPIOB,GPIO_Pin_5);
  116.  
  117. 手动把中断标志位清零
  118. EXTI_ClearITPendingBit(EXTI_Line0);
  119. }

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. 爬虫(猫眼电影+校花网+github+今日头条+拉钩)

    Requests+正则表达式爬取猫眼TOP100榜电影信息 MARK:将信息写入文件解决乱码方法,开启进程池秒爬. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  2. Python迷宫游戏(基础版)

    # 画地图map_data = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 2, 1, 0, 0, 0, ...

  3. 处理json大文件

    import json import pymysql # 读取review数据,并写入数据库 # 导入数据库成功,总共4736897条记录 def prem(db): cursor = db.curs ...

  4. Update openssh7.9 on centos6

    一.制作RPM安装包1)依赖安装yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel ...

  5. Git reset与checkout的区别

    reset: 将暂存区的文件回撤到工作区,文件内容不会有任何变化 checkout: 将工作区文件恢复到上一次commit时的内容,将会丢失修改了但未加入暂存区的内容

  6. es6 2017

    http://es6.ruanyifeng.com/ 18.async  20.Decorator 属于ES2017, nodejs 未实现 21.Module 中的 import export  n ...

  7. .NET轻量级任务管理类

    概述 最近做项目总是遇到服务跑批等需求,一直想写个任务管理的DLL,现在整理了一下思路,编写了一个DLL类库,使用方便.只要调用的子类继承服务基类便可以实现任务的整体调度.先看看页面效果: 使用方式 ...

  8. Linux read line

    cat ./port_list|while read linedo done

  9. jquery对form表单复杂(多个)条件的判断验证

    //按钮先执行验证再提交表 $(document).ready(function(){ // 点击查看图片 $('.nyroModal').nyroModal(); //按钮先执行验证再提交表单 $( ...

  10. 数据库构架设计中的Shared Everthting、Shared Nothing、和Shared Disk

    Shared Everthting:一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的代表SQLServer Shared Disk:各个处理单元使用自己的私有 ...