STM32库中GPIO_Pin_0和GPIO_PinSource0有什么区别?
展开全部
GPIO_PinSource0 = 0;
GPIO_PinSource1 = 1;
GPIO_PinSource2 = 2;
...
GPIO_Pin_0 = 0x0001;
GPIO_Pin_1 = 0x0002;
GPIO_Pin_2 = 0x0004;
...
一般这么使用:
GPIO_Pin_0 = (1<<GPIO_PinSource0);
GPIO_Pin_1 = (1<<GPIO_PinSource1);
GPIO_Pin_2 = (1<<GPIO_PinSource2);
...
为什么要这样做,看起来简直就是多此一举。主要是为了使代码更具有可读性。
GPIO_PinSource1 = 1;
GPIO_PinSource2 = 2;
...
GPIO_Pin_0 = 0x0001;
GPIO_Pin_1 = 0x0002;
GPIO_Pin_2 = 0x0004;
...
一般这么使用:
GPIO_Pin_0 = (1<<GPIO_PinSource0);
GPIO_Pin_1 = (1<<GPIO_PinSource1);
GPIO_Pin_2 = (1<<GPIO_PinSource2);
...
为什么要这样做,看起来简直就是多此一举。主要是为了使代码更具有可读性。
更多追问追答
追问
为什么GPIO_EXTLineConfig()函数调用的参数是GPIO_PortSourceGPIOx和GPIO_PinSourcex而不是GPIOx和GPIO_Pin_x,求详细解释一下,而且我查看库帮助文档,GPIO_PortSourceGPIOx和GPIO_Pin_x的定义地址也不一样。
GPIO_PortSourceGPIOx 和GPIO_Pin_x分别代表什么?
追答
是void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)函数吧,这应该是个配置IO口中断函数。配置IO口中断是要配置AFIO_EXTICRx(x=1,2,3,4)寄存器对吧。那就个GPIOx就没多大关系,GPIOx目的就是要从GPIOx这个基地址找到GPIOx相关的寄存器,如GPIOx_ODR,GPIOx_IDR,GPIOx_CRH,GPIOx_CRL这些寄存器等等,如果函数要传入的是GPIOx和GPIO_Pin_x的话就没什么意义了。
因为GPIO_EXTILineConfig()里面只有配置AFIO_EXTICRx寄存器,所以没有必要传入GPIOx这个参数。
说明:传入GPIOx和GPIO_Pin_x是能确定要配置哪个IO口,但是肯定会是函数内部的代码增加而变得没有必要,不然你可以自己试一试。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询