STM32F103 通过配置寄存器来控制I/O口

发布者:LuckyDaisy最新更新时间:2017-09-18 来源: eefocus关键字:STM32F103  配置寄存器  控制I  O口 手机看文章 扫描二维码
随时随地手机看文章

1、STM32F103 通过配置寄存器来控制I/O口

1.1、GPIO的概述

1.2、端口位配置表

1.3、GPIO各寄存器的配置

2、程序例举:

2.1、配置寄存器,使GPIOA.0、GPIOA.1置位:


  1. /* Includes ------------------------------------------------------------------*/  

  2. #include "stm32f10x_lib.h"    //包含了所有的头文件 它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。  

  3. #include "stm32f10x_map.h"  

  4.   

  5. void Delay_Ms(u16 time);  

  6.   

  7.   

  8.   

  9.   

  10. /* Private functions ---------------------------------------------------------*/   

  11. /******************************************************************************* 

  12. * Function Name  : main 

  13. * Description    : Main program. 

  14. * Input          : None 

  15. * Output         : None 

  16. * Return         : None 

  17. *******************************************************************************/  

  18. int main(void)  

  19. {  

  20. //  GPIOA->CRL = 0X00 ;  

  21. //  GPIOA->CRH = 0XFFFFFFFF ;  

  22.     /*--------控制STM32引脚GPIOA.0 GPIOA.1推挽输出高电平--------*/  

  23.     //1、设置GPIOA的引脚的工作模式,即配置寄存器GPIOA_CRL 、 GPIOA_CRH  

  24.     GPIOA->CRL = 0x33 ; //  00---00 0011 0011  CNF0 = 00 MODE = 11  

  25.   

  26.     //2、设置从引脚上输出的为高/低电平,即配置寄存器GPIOA_ODR  

  27.     GPIOA->ODR = 0X00000000 ;  

  28.     GPIOA->ODR = 0X00000003 ;  //  1 1   

  29.   

  30.     while (1)  

  31.     {  

  32.      ;  

  33.     }  

  34. }  


2.2、配置寄存器,使GPIOA.0作为GPIOA.8的跟随器:(即A.8输入什么样的电平信号,A.0就输出怎样的电平信号)


  1. /* Includes ------------------------------------------------------------------*/  

  2. #include "stm32f10x_lib.h"    //包含了所有的头文件 它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。  

  3. #include "stm32f10x_map.h"  

  4.   

  5. void Delay_Ms(u16 time);  

  6.   

  7.   

  8.   

  9.   

  10. /* Private functions ---------------------------------------------------------*/   

  11. /******************************************************************************* 

  12. * Function Name  : main 

  13. * Description    : 从GPIOA.8输入一个电平信号,将该电平信号从GPIOA.0口输出 

  14. * Input          : None 

  15. * Output         : None 

  16. * Return         : None 

  17. *******************************************************************************/  

  18. int main(void)  

  19. {  

  20.   

  21.     /*--------控制STM32引脚GPIOA.0 GPIOA.1推挽输出高电平--------*/  

  22.     //1、设置GPIOA的引脚的工作模式,即配置寄存器GPIOA_CRL 、 GPIOA_CRH  

  23.         //GPIOA.0推挽输出,速度50MHZ , GPIOA.8浮空输入  

  24.         GPIOA->CRL = 0x03 ; // CNF0 = 00 MODE0 = 11  

  25.         GPIOA->CRH = 0x04 ; // CNF0 = 01 MODE0 = 00  

  26.   

  27.     //2、配置寄存器GPIOA_ODR、GPIOA_IDR ,实现GPIOA.0输出 跟随 GPIOA.8的输入  

  28.         while(1)  

  29.         {  

  30.             if((GPIOA->IDR & 0X0100) == 0X0100)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  31.             {  

  32.                 GPIOA->ODR = 0X01 ;   

  33.             }  

  34.             else  

  35.             {  

  36.                 GPIOA->ODR = 0X00 ;  

  37.             }  

  38.            

  39.         }  

  40.   

  41.         return 1 ;  

  42. }  


2.3、配置寄存器,使GPIOA.0-.7作为GPIOA.8-.15的跟随器:(即A.8-.15输入什么样的电平信号,对应的A.0-.7就输出怎样的电平信号)

方法一:通过配置GPIOA->IDR和GPIOA->ODR寄存器实现


  1. /* Includes ------------------------------------------------------------------*/  

  2. #include "stm32f10x_lib.h"    //包含了所有的头文件 它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。  

  3. #include "stm32f10x_map.h"  

  4.   

  5. void Delay_Ms(u16 time);  

  6.   

  7.   

  8.   

  9.   

  10. /* Private functions ---------------------------------------------------------*/   

  11. /******************************************************************************* 

  12. * Function Name  : main 

  13. * Description    : 从GPIOA.8输入一个电平信号,将该电平信号从GPIOA.0口输出 

  14. * Input          : None 

  15. * Output         : None 

  16. * Return         : None 

  17. *******************************************************************************/  

  18. int main(void)  

  19. {  

  20.   

  21.     /*--------控制STM32引脚GPIOA.0 GPIOA.1推挽输出高电平--------*/  

  22.     //1、设置GPIOA的引脚的工作模式,即配置寄存器GPIOA_CRL 、 GPIOA_CRH  

  23.         //GPIOA.0推挽输出,速度50MHZ , GPIOA.8浮空输入  

  24.         GPIOA->CRL = 0x03 ; // CNF0 = 00 MODE0 = 11  

  25.         GPIOA->CRH = 0x04 ; // CNF0 = 01 MODE0 = 00  

  26.   

  27.     //2、配置寄存器GPIOA_ODR、GPIOA_IDR ,实现GPIOA.0输出 跟随 GPIOA.8的输入  

  28.         while(1)  

  29.         {  

  30.             if((GPIOA->IDR & 0X0100) == 0X0100)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  31.             {  

  32.                 GPIOA->ODR = 0X01 ;   

  33.             }  

  34.             else  

  35.             {  

  36.                 GPIOA->ODR = 0X00 ;  

  37.             }  

  38.            

  39.         }  

  40.   

  41.         return 1 ;  

  42. }  


方法二:通过配置 置位/清除寄存器(低16位置位,高16位清零) 和 位清零寄存器



[objc] view plain copy

  1. /* Includes ------------------------------------------------------------------*/  

  2. #include "stm32f10x_lib.h"    //包含了所有的头文件 它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。  

  3. #include "stm32f10x_map.h"  

  4.   

  5. void Delay_Ms(u16 time);  

  6.   

  7.   

  8.   

  9.   

  10. /* Private functions -----------------------------------------------------------------------------*/   

  11. /************************************************************************************************** 

  12. * Function Name  : main 

  13. * Description    : 从GPIOA.8-.16输入一个电平信号,GPIOA.0-.7口分别将对应引脚输入的电平信号输出 

  14. * Input          : None 

  15. * Output         : None 

  16. * Return         : None 

  17. ****************************************************************************************************/  

  18. int main(void)  

  19. {  

  20.   

  21.     /*--------控制STM32引脚GPIOA.0 GPIOA.1推挽输出高电平--------*/  

  22.     //1、设置GPIOA的引脚的工作模式,即配置寄存器GPIOA_CRL 、 GPIOA_CRH  

  23.         //GPIOA.0-.7推挽输出,速度50MHZ , GPIOA.8-.16浮空输入  

  24.         GPIOA->CRL = 0x33333333 ; // CNF0 = 00 MODE0 = 11  

  25.         GPIOA->CRH = 0x44444444 ; // CNF0 = 01 MODE0 = 00  

  26.   

  27.     //2、配置寄存器GPIOA_ODR、GPIOA_IDR ,实现GPIOA.0输出 跟随 GPIOA.8的输入  

  28.         while(1)  

  29.         {     

  30.         /*----------------------第0位----------------------*/  

  31.             if((GPIOA->IDR & 0X0100) == 0X0100)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  32.             {  

  33.                 GPIOA->BSRR = 0X01 ;  //通过配置置位/清零寄存器将对应位置一  

  34.             }  

  35.             else  

  36.             {  

  37.                 GPIOA->BRR = 0X01 ;  //通过配置清零寄存器将对应位清零  

  38.             }  

  39.         /*----------------------第1位----------------------*/  

  40.             if((GPIOA->IDR & 0X0200) == 0X0200)   //寄存器GPIOA->IDR的第9位为1,表示从在GPIOA.9口输入了高电平  

  41.             {  

  42.                 GPIOA->BSRR = 0X02 ;  //通过配置置位/清零寄存器将对应位置一  

  43.             }  

  44.             else  

  45.             {  

  46.                 GPIOA->BRR = 0X02 ;  //通过配置清零寄存器将对应位清零  

  47.             }  

  48.         /*----------------------第2位----------------------*/  

  49.             if((GPIOA->IDR & 0X0400) == 0X0400)   //寄存器GPIOA->IDR的第10位为1,表示从在GPIOA.10口输入了高电平  

  50.             {  

  51.                 GPIOA->BSRR = 0X04 ;  //通过配置置位/清零寄存器将对应位置一  

  52.             }  

  53.             else  

  54.             {  

  55.                 GPIOA->BRR = 0X04 ;  //通过配置清零寄存器将对应位清零  

  56.             }  

  57.         /*----------------------第3位----------------------*/  

  58.             if((GPIOA->IDR & 0X0800) == 0X0800)   //寄存器GPIOA->IDR的第11位为1,表示从在GPIOA.11口输入了高电平  

  59.             {  

  60.                 GPIOA->BSRR = 0X08 ;  //通过配置置位/清零寄存器将对应位置一  

  61.             }  

  62.             else  

  63.             {  

  64.                 GPIOA->BRR = 0X08 ;  //通过配置清零寄存器将对应位清零  

  65.             }  

  66.         /*----------------------第4位----------------------*/  

  67.             if((GPIOA->IDR & 0X1000) == 0X1000)   //寄存器GPIOA->IDR的第12位为1,表示从在GPIOA.12口输入了高电平  

  68.             {  

  69.                 GPIOA->BSRR = 0X10 ;  //通过配置置位/清零寄存器将对应位置一  

  70.             }  

  71.             else  

  72.             {  

  73.                 GPIOA->BRR = 0X10 ;  //通过配置清零寄存器将对应位清零  

  74.             }  

  75.         /*----------------------第5位----------------------*/  

  76.             if((GPIOA->IDR & 0X2000) == 0X2000)   //寄存器GPIOA->IDR的第13位为1,表示从在GPIOA.13口输入了高电平  

  77.             {  

  78.                 GPIOA->BSRR = 0X20 ;  //通过配置置位/清零寄存器将对应位置一  

  79.             }  

  80.             else  

  81.             {  

  82.                 GPIOA->BRR = 0X20 ;  //通过配置清零寄存器将对应位清零  

  83.             }  

  84.         /*----------------------第6位----------------------*/  

  85.             if((GPIOA->IDR & 0X4000) == 0X4000)   //寄存器GPIOA->IDR的第14位为1,表示从在GPIOA.14口输入了高电平  

  86.             {  

  87.                 GPIOA->BSRR = 0X40 ;  //通过配置置位/清零寄存器将对应位置一  

  88.             }  

  89.             else  

  90.             {  

  91.                 GPIOA->BRR = 0X40 ;  //通过配置清零寄存器将对应位清零  

  92.             }  

  93.         /*----------------------第7位----------------------*/  

  94.             if((GPIOA->IDR & 0X8000) == 0X8000)   //寄存器GPIOA->IDR的第15位为1,表示从在GPIOA.15口输入了高电平  

  95.             {  

  96.                 GPIOA->BSRR = 0X80 ;  //通过配置置位/清零寄存器将对应位置一  

  97.             }  

  98.             else  

  99.             {  

  100.                 GPIOA->BRR = 0X80 ;  //通过配置清零寄存器将对应位清零  

  101.             }  

  102.            

  103.         }  

  104.   

  105.         return 1 ;  

  106. }  



方法三:通过配置 置位/清除寄存器(低16位置位,高16位清零) 和 位清零寄存器  (对相关寄存器用宏定义封装)


  1. /* Includes ------------------------------------------------------------------*/  

  2. #include "stm32f10x_lib.h"    //包含了所有的头文件 它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。  

  3. #include "stm32f10x_map.h"  

  4.   

  5. #define SET_GPIOA GPIOA->BSRR   

  6. #define RESET_GPIOA GPIOA->BRR  

  7.   

  8.   

  9. /* Private functions -----------------------------------------------------------------------------*/   

  10. /************************************************************************************************** 

  11. * Function Name  : main 

  12. * Description    : 从GPIOA.8-.16输入一个电平信号,GPIOA.0-.7口分别将对应引脚输入的电平信号输出 

  13. * Input          : None 

  14. * Output         : None 

  15. * Return         : None 

  16. ****************************************************************************************************/  

  17. int main(void)  

  18. {  

  19.   

  20.     /*--------控制STM32引脚GPIOA.0 GPIOA.1推挽输出高电平--------*/  

  21.     //1、设置GPIOA的引脚的工作模式,即配置寄存器GPIOA_CRL 、 GPIOA_CRH  

  22.         //GPIOA.0-.7推挽输出,速度50MHZ , GPIOA.8-.16浮空输入  

  23.         GPIOA->CRL = 0x33333333 ; // CNF0 = 00 MODE0 = 11  

  24.         GPIOA->CRH = 0x44444444 ; // CNF0 = 01 MODE0 = 00  

  25.   

  26.     //2、配置寄存器GPIOA_ODR、GPIOA_IDR ,实现GPIOA.0输出 跟随 GPIOA.8的输入  

  27.         while(1)  

  28.         {     

  29.         /*----------------------第0位----------------------*/  

  30.             if((GPIOA->IDR & 0X0100) == 0X0100)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  31.             {  

  32.                 SET_GPIOA = 0X01 ;  //通过配置置位/清零寄存器将对应位置一  

  33.             }  

  34.             else  

  35.             {  

  36.                 RESET_GPIOA = 0X01 ;    //通过配置清零寄存器将对应位清零  

  37.             }  

  38.         /*----------------------第1位----------------------*/  

  39.             if((GPIOA->IDR & 0X0200) == 0X0200)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  40.             {  

  41.                 SET_GPIOA = 0X02 ;  //通过配置置位/清零寄存器将对应位置一  

  42.             }  

  43.             else  

  44.             {  

  45.                 RESET_GPIOA = 0X02 ;    //通过配置清零寄存器将对应位清零  

  46.             }  

  47.         /*----------------------第2位----------------------*/  

  48.             if((GPIOA->IDR & 0X0400) == 0X0400)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  49.             {  

  50.                 SET_GPIOA = 0X04 ;  //通过配置置位/清零寄存器将对应位置一  

  51.             }  

  52.             else  

  53.             {  

  54.                 RESET_GPIOA = 0X04 ;    //通过配置清零寄存器将对应位清零  

  55.             }  

  56.         /*----------------------第3位----------------------*/  

  57.             if((GPIOA->IDR & 0X0800) == 0X0800)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  58.             {  

  59.                 SET_GPIOA = 0X08 ;  //通过配置置位/清零寄存器将对应位置一  

  60.             }  

  61.             else  

  62.             {  

  63.                 RESET_GPIOA = 0X08 ;    //通过配置清零寄存器将对应位清零  

  64.             }  

  65.         /*----------------------第4位----------------------*/  

  66.             if((GPIOA->IDR & 0X1000) == 0X1000)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  67.             {  

  68.                 SET_GPIOA = 0X10 ;  //通过配置置位/清零寄存器将对应位置一  

  69.             }  

  70.             else  

  71.             {  

  72.                 RESET_GPIOA = 0X10 ;    //通过配置清零寄存器将对应位清零  

  73.             }  

  74.         /*----------------------第5位----------------------*/  

  75.             if((GPIOA->IDR & 0X2000) == 0X2000)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  76.             {  

  77.                 SET_GPIOA = 0X20 ;  //通过配置置位/清零寄存器将对应位置一  

  78.             }  

  79.             else  

  80.             {  

  81.                 RESET_GPIOA = 0X20 ;    //通过配置清零寄存器将对应位清零  

  82.             }  

  83.         /*----------------------第6位----------------------*/  

  84.             if((GPIOA->IDR & 0X4000) == 0X4000)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  85.             {  

  86.                 SET_GPIOA = 0X40 ;  //通过配置置位/清零寄存器将对应位置一  

  87.             }  

  88.             else  

  89.             {  

  90.                 RESET_GPIOA = 0X40 ;    //通过配置清零寄存器将对应位清零  

  91.             }  

  92.         /*----------------------第7位----------------------*/  

  93.             if((GPIOA->IDR & 0X8000) == 0X8000)   //寄存器GPIOA->IDR的第8位为1,表示从在GPIOA.8口输入了高电平  

  94.             {  

  95.                 SET_GPIOA = 0X80 ;  //通过配置置位/清零寄存器将对应位置一  

  96.             }  

  97.             else  

  98.             {  

  99.                 RESET_GPIOA = 0X80 ;    //通过配置清零寄存器将对应位清零  

  100.             }  

  101.            

  102.         }  

  103.   

  104.         return 1 ;  

  105. }  



关键字:STM32F103  配置寄存器  控制I  O口 引用地址:STM32F103 通过配置寄存器来控制I/O口

上一篇:STM32F10x GPIO配置 之 位绑定
下一篇:STM32F10x GPIO引脚说明

推荐阅读最新更新时间:2024-03-16 15:37

I2C总线控制的CD2518彩电
  I2C总线控制是由一连串二进制编码脉冲信号,通过程序指令方式实现微处理器对单元功能集成电路的控制和信息交换,以软件代替硬件,提高控制系统效率。从而实现电视信号的控制,以CPU为核心,存储器为记忆,经过TV信号处理,来完成彩色解码、图像中放、视放、伴音、遥控,使电路简化,功能增加,提高产品的可靠性。   利用I2C总线设计应用程序,简化了硬件设计,使用户“傻瓜化”,在生产中,可以省掉一大半可调电位器,大大地简化了调整工艺,产品一致性好,提高了产品的可靠性,并且具有故障自检功能,能够缩短检修时间,提高检修率。   一、CD2518彩电的I2C控制系统   彩电的I2C总线的控制系统是由硬件电路和软件数据系统组成的,硬件电路是
[嵌入式]
基于ARM的I2C设备控制方法的实现研究
1 引 言 I2C总线是由Philips公司开发的2线式串行总线,由于其简单、高效、互联成本小而被广泛地用于微控制器与外围设备的连接。AT91SAM7X256是Atmel公司于2005年推出的基于ARM7的工业级芯片,他以体积小、功耗低、连接方式广泛、处理资源丰富、控制灵活等特点受到嵌入式领域开发人员的重视。本文介绍AT91SAM7X256的I2C控制器TWI接口(two-wired interface)的使用方法,并以I2C设备E2PROM和日历时钟芯片为例,实现AT91SAM7X256对时间数据的读取与存储。同时,为了验证时间数据的读取与存储是否正确,使用AT91SAM7X256的在线仿真器J-LINK将E2PROM
[工业控制]
基于ARM的<font color='red'>I</font>2C设备<font color='red'>控制</font>方法的实现研究
STM32F103 CAN总线配置与通信小记
总线概念在此只做非常简要的介绍 CAN 是Controller Area Network 的缩写(CAN BUS),具有布线简单、典型的总线型结构、可最大限度的节约布线与维护成本、稳定可靠、实时、抗干扰能力强、传输距离远等特点,是一种成功的总线。不仅在汽车行业得到推广与应用,在航天、电力、石化、冶金、纺织、造纸等领域也得到广泛应用。在自动化仪表、工业生产现场、数控机床等系统中也越来越多的使用了CAN总线。 CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信。在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号),CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传
[单片机]
STM32F103的FSMC读写NANDFlash的学习
1. STM32的FSMC接口可以控制外部的NANDFlash,因此学习下,先看下硬件电路,地址线是A16.A17,数据线D0-D7,那么映射的地址空间是多少?D0是数据/地址线,两个用途。 2. 引脚图,现在关心的是,这个NAND的地址映射的地址空间是多少? 3. 看下STM32的手册。 4. 看下代码,STM32的库基本都封装好的函数,直接调用即可,函数名字一看就明白,还是回到原来的问题,划分的地址空间是多少?代码为我们划分ZONE,Block, Page,封装了底层的地址,一块nand flash也分为若干block,每个block分为如干page。一般而言,block、page之间的关系随着芯片的不同而不同。
[单片机]
基于STM32F103入门2——按键点灯
1:按键不带锁存 不带锁存的意思就是 比如你按下按键灯亮,但是你一旦松手了灯就熄灭了,所以你想这个灯一直亮,那么你就一直按着按键不松手。 1.1例程 key.c /*========================key.c=========================*/ #include stm32f10x.h #include key.h /*按键初始化函数*/ void KEY_Init(void) { //1.打开控制GPIOA的时钟(APB2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //2.配置结构体
[单片机]
STM32F103RCT6的普通IO模拟串口的实验
使用了STM32CubeMX及Keil (HAL库) 材料:stm32开发板、USB转TTL?CH340模块、杜邦线、st-link 实验原理: 模拟了异步半双工通信 波特率可变 起始位:1 数据位:8 停止位:1 (1个数据10位) 无校验位 传输一个字符的时候先发送1位起始位,然后是8位数据位(从低位到高位),最后是一位停止位 用1个普通的GPIO口输出(模拟TXD),模拟了以上发送的高低电平,采用定时器延时(一个位对应的电平的持续时间为1000000/波特率 μs) 用1个普通的GPIO口中断输入(模拟RXD),模拟了接收,下降沿触发中断,采用定时器延时,大概在数据位中央采集1次电平数据 实验设计: 使用了PA1作
[单片机]
STM32F103C8T6读写内部flash
大家好,今天和大家分享一下STM32F103C8T6读写内部flash,关于103系列的单片机大家可以参考选项手册查看flash的容量。 一、芯片FLASH容量分类: 可以看到我们今天介绍的这款芯片的flash大小是64K的,网上也有人说它可以支持到128K,但是官方给出的解释是前64K是有保证的,后面的无法保证,所以想要使用的小伙伴需要慎重。 现在芯片的flash大小我们知道了,下面就可以看看这个flash是怎么划分的了,通过芯片数据手册,我们能看到今天说的STM32F103C8T6是属于中等容量的设备。 既然是中等容量的设备了,那我们就来看看flash划分吧,在STM32的闪存编程手册中有这样一段话:按照不同容量,存储
[单片机]
<font color='red'>STM32F103</font>C8T6读写内部flash
STM32F103学习笔记(五) 外部中断
首先是外部中断基本的概念:STM32 的每个 IO 都可以作为外部中断 的中断输入口,这点也是 STM32 的强大之处。 STM32F103 的中断控制器支持 19 个外部中断/ 事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。 STM32F103 的 19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断。 线 16:连接到 PVD 输出。 线 17:连接到 RTC 闹钟事件。 线 18:连接到 USB 唤醒事件。 线16~18还没有学到只看了线0~15。 每个中断线对应着7个GPIO口,形成映射关系,以线 0 为例:它对应了 GPIOA.0、 GPIOB.0、 GPIOC.0、 GPIOD.0
[单片机]
<font color='red'>STM32F103</font>学习笔记(五) 外部中断
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved