STM32 IO端口宏定义
答案:2 悬赏:0
解决时间 2021-01-21 21:01
- 提问者网友:温旧梦泪无声
- 2021-01-21 11:16
STM32 IO端口宏定义
最佳答案
- 二级知识专家网友:由着我着迷
- 2021-01-21 11:53
拿个led举例:
//LED端口定义
#define LED0 PAout(1)
#define LED1 PAout(2)
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n)
#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))
指的就是位区,你可以搜搜正点原子,讲的很好的。
//LED端口定义
#define LED0 PAout(1)
#define LED1 PAout(2)
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n)
#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))
指的就是位区,你可以搜搜正点原子,讲的很好的。
全部回答
- 1楼网友:怀裏藏嬌
- 2021-01-21 12:37
是结构体,GPIOA/GPIOB...
GPIOA表示GPIOA的所有寄存器的。
GPIOA的定义是:
typedef struct
{
__IO uint32_t MODER;
__IO uint32_t OTYPER;
__IO uint32_t OSPEEDR;
__IO uint32_t PUPDR;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint16_t BSRRL;
__IO uint16_t BSRRH;
__IO uint32_t LCKR;
__IO uint32_t AFR[2];
} GPIO_TypeDef;
访问的方法就是 GPIOA->PUPDR GPIOA->BSRRL
GPIOA表示GPIOA的所有寄存器的。
GPIOA的定义是:
typedef struct
{
__IO uint32_t MODER;
__IO uint32_t OTYPER;
__IO uint32_t OSPEEDR;
__IO uint32_t PUPDR;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint16_t BSRRL;
__IO uint16_t BSRRH;
__IO uint32_t LCKR;
__IO uint32_t AFR[2];
} GPIO_TypeDef;
访问的方法就是 GPIOA->PUPDR GPIOA->BSRRL
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯