GPIO_pins_define和GPIO_Pin_sources区别

本文详细介绍了GPIO_Pin_n和GPIO_PinSourceN在微控制器中的作用。GPIO_Pin_n用于标识GPIO口的特定管脚位置,常用于设置输入输出模式、模拟输入等基本属性。而GPIO_PinSourceN则在配置端口复用功能时使用,表示管脚在端口的复用功能序号。了解这些概念对于微控制器的底层驱动开发至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GPIO_Pin_n可以理解为某端口脚在整个端口的位置。比方某GPIO口的第6管脚位置编码GPIO_Pin_6 被定义为 ((uint16_t)0x0040) ,在对相应GPIO管脚做基本属性配置时会用到,如配置输入输出模式、模拟输入模式的选择等。

而GPIO_PinSourceN一般是在对某GPIO口相应pin脚的复用功能进行选择配置才会用到。它是根据端口各脚位的位置按顺序从0开始依次递增编号,可以理解为该管脚在该端口的序号。比方某GPIO口的第6号复用功能脚的序号GPIO_PinSource6 被定义为 ((uint8_t)0x06) 。

#define LCD_SPI_SELECTED SPI1 #define LCD_SPI_SELECTED_CLK CRM_SPI1_PERIPH_CLOCK #define LCD_SPI_SELECTED_IRQn SPI1_IRQn #define LCD_PEN_PIN GPIO_PINS_4 #define LCD_PEN_MASK (1<<4) #define LCD_PEN_PORT GPIOA #define LCD_PEN_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define PEN_CHECK gpio_input_data_bit_read(LCD_PEN_PORT,LCD_PEN_PIN) #define LCD_RST_PIN GPIO_PINS_15 #define LCD_RST_MASK (1<<15) #define LCD_RST_PORT GPIOA #define LCD_RST_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define LCD_BLK_PIN GPIO_PINS_9 #define LCD_BLK_MASK (1<<9) #define LCD_BLK_PORT GPIOA #define LCD_BLK_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define LCD_DC_PIN GPIO_PINS_7 #define LCD_DC_MASK (1<<7) #define LCD_DC_PORT GPIOC #define LCD_DC_GPIO_CLK CRM_GPIOC_PERIPH_CLOCK #define LCD_CS1_PIN GPIO_PINS_0 #define LCD_CS1_MASK (1<<0) #define LCD_CS1_PORT GPIOA #define LCD_CS1_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define LCD_CS2_PIN GPIO_PINS_1 #define LCD_CS2_MASK (1<<1) #define LCD_CS2_PORT GPIOA #define LCD_CS2_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define LCD_SPI_SCK_PIN GPIO_PINS_5 #define LCD_SPI_SCK_PORT GPIOA #define LCD_SPI_SCK_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define LCD_SPI_MOSI_PIN GPIO_PINS_7 #define LCD_SPI_MOSI_PORT GPIOA #define LCD_SPI_MOSI_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define LCD_SPI_MISO_PIN GPIO_PINS_6 #define LCD_SPI_MISO_PORT GPIOA #define LCD_SPI_MISO_GPIO_CLK CRM_GPIOA_PERIPH_CLOCK #define LCD_DC_SET LCD_DC_PORT->scr = LCD_DC_MASK #define LCD_RST_SET LCD_RST_PORT->scr = LCD_RST_MASK #define LCD_BLK_SET LCD_BLK_PORT->scr = LCD_BLK_MASK #define LCD_CS1_SET LCD_CS1_PORT->scr = LCD_CS1_MASK #define LCD_CS2_SET LCD_CS2_PORT->scr = LCD_CS2_MASK #define LCD_DC_CLR LCD_DC_PORT->clr = LCD_DC_MASK #define LCD_RST_CLR LCD_RST_PORT->clr = LCD_RST_MASK #define LCD_BLK_CLR LCD_BLK_PORT->clr = LCD_BLK_MASK #define LCD_CS1_CLR LCD_CS1_PORT->clr = LCD_CS1_MASK #define LCD_CS2_CLR LCD_CS2_PORT->clr = LCD_CS2_MASK #define LCD_SPI_MASTER_DMA DMA1 #define LCD_SPI_MASTER_DMA_CLK CRM_DMA1_PERIPH_CLOCK #define LCD_SPI_MASTER_Tx_DMA_IRQn DMA1_Channel3_IRQn #define LCD_SPI_MASTER_Rx_DMA_Channel DMA1_CHANNEL2 #define LCD_SPI_MASTER_Rx_DMA_INT DMA1_FDT2_FLAG #define LCD_SPI_MASTER_Rx_DMA_FLAG DMA1_FDT2_FLAG #define LCD_SPI_MASTER_Tx_DMA_Channel DMA1_CHANNEL3 #define LCD_SPI_MASTER_Tx_DMA_INT DMA1_FDT3_FLAG #define LCD_SPI_MASTER_Tx_DMA_FLAG DMA1_FDT3_FLAG #define LCD_SPI_MASTER_DR_Base (uint32_t)(&(LCD_SPI_SELECTED->dt));
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值