1) 使用ORD寄存器 GPIOB->ODR |= 1 << 7; 程序执行步骤: ① 读取ODR寄存器的值 ② 把读出来的值和1 <<7进行按位或运算 ③ 把计算后的值再写入ODR寄存器 2) 使用BSRR寄存器 GPIOB->BSRRL = 1 << 11; 程序执行步骤: 把1<<7的值写入BSRR寄存器 (9)GPIO 端口配置锁定寄存器 (GPIOx_LCKR)(x = ...
} GPIO_ORD __attribute__((bitband)); GPIO_ORD *GPIOA_ODR = (GPIO_ORD *)(&GPIOA->ODR); GPIO_ORD *GPIOB_ODR = (GPIO_ORD *)(&GPIOB->ODR); GPIO_ORD *GPIOC_ODR = (GPIO_ORD *)(&GPIOC->ODR); GPIO_ORD *GPIOD_ODR = (GPIO_ORD *)(&GPIOD->ODR); GPIO_ORD *GPIOE_ODR...
while(t--)for (i=0;i<10000;i++);}void A_LED_LIGHT(){GPIOA_ORD=0x0<<7;GPIOB_ORD=0x...
硬件位带操作优势 优势1:比如我们在地址0x2000 0000定义了一个变量unit8_t a, 如果我们要将此变量的bit0清零,而其它bit不变。 a & = ~0x01 这个过程就需要读变量a,修改bit0,然后重新赋值给变量a,也就是读 - 修改 - 写经典三部曲,如果我们使用硬件位带就可以一步就完成,也就是所谓的原子操作,优势是不...
} GPIO_ORD __attribute__((bitband)); GPIO_ORD*GPIOA_ODR = (GPIO_ORD *)(&GPIOA->ODR); GPIO_ORD*GPIOB_ODR = (GPIO_ORD *)(&GPIOB->ODR); GPIO_ORD*GPIOC_ODR = (GPIO_ORD *)(&GPIOC->ODR); GPIO_ORD*GPIOD_ODR = (GPIO_ORD *)(&GPIOD->ODR); ...
_ORD__attribute__((bitband));GPIO_ORD*GPIOA_ODR=(GPIO_ORD*)(&GPIOA->ODR);GPIO_ORD*GPIOB_ODR=(GPIO_ORD*)(&GPIOB->ODR);GPIO_ORD*GPIOC_ODR=(GPIO_ORD*)(&GPIOC->ODR);GPIO_ORD*GPIOD_ODR=(GPIO_ORD*)(&GPIOD->ODR);GPIO_ORD*GPIOE_ODR=(GPIO_ORD*)(&GPIOE->ODR);GPIO_ORD*...
} GPIO_ORD __attribute__((bitband)); GPIO_ORD *GPIOA_ODR = (GPIO_ORD *)(&GPIOA->ODR); GPIO_ORD *GPIOB_ODR = (GPIO_ORD *)(&GPIOB->ODR); GPIO_ORD *GPIOC_ODR = (GPIO_ORD *)(&GPIOC->ODR); GPIO_ORD *GPIOD_ODR = (GPIO_ORD *)(&GPIOD->ODR); GPIO_ORD *GPIOE_ODR...
if event.key == pygame.K_RIGHT or event.key == ord('d'):if(filename == "redLed.png" ):filename = "greenLed.png"col = colors[1]else:filename = "redLed.png"col = colors[0]setColor(col)screen.fill([255,255,255])img = pygame.image.load(filename)imgpos = img.get_rect()im...
while(t--)for (i=0;i<10000;i++);}void A_LED_LIGHT(){GPIOA_ORD=0x0<<7;GPIOB_ORD=0x...
GPIO接口 第4讲GPIO接口 基础知识 数据类型 字节型数据(Byte):数据宽度为8bits半字数据类型(HalfWord):数据宽度为 16bits,存取式必须以2字节对齐的方式字数据类型(Word):数据宽度为32bits,存取式必须以4字节对齐的方式 ARM微处理器:CPU模式(processormode)CPU模式的转变:软件控制异常外部中断 7种CPU...