![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
//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) //输入 |
关于STM32的PWM占空比设置
Stem32CubeIDE能像Keil一样指定不同文件下的代码编译到不同的FLASH地址吗?比如部分代码存放到内部FLASH,另一部分存放到外部QSPI的FLASH中
STM32H745单片机按照官方手册AN5286配置的,想简单点亮一个led,程序可以正常烧进去,但是不好使,请问为什么啊?
STM32 H7B0VBT6同时使用A和B闹钟,操作备份寄存器导致闹钟无法唤醒
芯片保护怎么解锁
求助,电脑识别不到stlink,电源指示灯是亮的
stm32F429 lwip tcp客户端,使用cubmx生成的代码,接收数据报错,报错几次就会彻底不能收发数据了
stm32h743 lan8720 FreeRTOS cube配置lwip socket接口ping异常,tcp-c收发异常
教程案例出现问题,在分类案例中
STM32H745BIT6单片机怎么看哪个引脚配置哪个内核啊,在数据手册里没看到
带操作单元。
不过,尽管没有这个位带操作单元,但并不影响我们对内存或寄存器进行位操作。自行编写代码即可。
比方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)可以使用。