
//IO口操作宏定义 define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))define MEM_ADDR(addr) ((volatile unsigned long )(addr))define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))//IO口地址映射 define GPIOA_ODR_Addr (GPIOA_BASE+20) //0x40020014define GPIOB_ODR_Addr (GPIOB_BASE+20) //0x40020414define GPIOC_ODR_Addr (GPIOC_BASE+20) //0x40020814define GPIOD_ODR_Addr (GPIOD_BASE+20) //0x40020C14define GPIOE_ODR_Addr (GPIOE_BASE+20) //0x40021014define GPIOF_ODR_Addr (GPIOF_BASE+20) //0x40021414define GPIOG_ODR_Addr (GPIOG_BASE+20) //0x40021814define GPIOH_ODR_Addr (GPIOH_BASE+20) //0x40021C14define GPIOI_ODR_Addr (GPIOI_BASE+20) //0x40022014define GPIOA_IDR_Addr (GPIOA_BASE+16) //0x40020010define GPIOB_IDR_Addr (GPIOB_BASE+16) //0x40020410define GPIOC_IDR_Addr (GPIOC_BASE+16) //0x40020810define GPIOD_IDR_Addr (GPIOD_BASE+16) //0x40020C10define GPIOE_IDR_Addr (GPIOE_BASE+16) //0x40021010define GPIOF_IDR_Addr (GPIOF_BASE+16) //0x40021410define GPIOG_IDR_Addr (GPIOG_BASE+16) //0x40021810define GPIOH_IDR_Addr (GPIOH_BASE+16) //0x40021C10define GPIOI_IDR_Addr (GPIOI_BASE+16) //0x40022010//IO口操作,只对单一的IO口! //确保n的值小于16! define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //输入define PHout(n) BIT_ADDR(GPIOH_ODR_Addr,n) //输出define PHin(n) BIT_ADDR(GPIOH_IDR_Addr,n) //输入define PIout(n) BIT_ADDR(GPIOI_ODR_Addr,n) //输出define PIin(n) BIT_ADDR(GPIOI_IDR_Addr,n) //输入 |
求助:STM32H7B0 + QSPI W25Q128JV无法读取ID
板载STLinkV3无法使用
STM32H7开启单脉冲模式 PWM波脉冲宽度不受CCR控制
有提供 stm32h747 系列的 驱动 ek79007 mipi 的例程吗 ?
如何STM32H7的hal库,做SPI主从机通讯?
MotorControl Workbench_6.3.2配置单片机时找不到STM32H743VIT6E
STM32H743IIT6同时配置ADC3通道中的温度及内部参考电压,扫描单次转换,怎样读出这二个数据?
TouchGFX Designer下载工程到STM32H7S7-DK报错
Demo 例程
关于STM32H743VIT6 在用QSPI的接口,想换个CS的管脚,但芯片内置是绑死的,这个要怎么处理,用个其他的IO口做片选
带操作单元。
不过,尽管没有这个位带操作单元,但并不影响我们对内存或寄存器进行位操作。自行编写代码即可。
比方STM32的库里就有相关函数 或宏可以使用。
#define SET_BIT(REG, BIT) ((REG) |= (BIT))
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
#define READ_BIT(REG, BIT) ((REG) & (BIT))
#define CLEAR_REG(REG) ((REG) = (0x0))
#define WRITE_REG(REG, VAL) ((REG) = (VAL))
#define READ_REG(REG) ((REG))
对于GPIO指定管脚的操作,有HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)可以使用。