1.3 解析 assert_param(IS_GPIO_PIN(GPIO_Pin)) #define IS_GPIO_PIN(PIN) (((PIN) & (uint16_t)0x00) == 0x00) && ((PIN) != (uint16_t)0x00)) 1、 ((PIN) & (uint16_t)0x00) == 0x00 无论PIN为何值其相与的结果都为0x00;也就是这个等式恒成立成立; 2、 (PIN) !=(uint16_t...
5.具体要输出的内容(置位复位寄存器:BSRR/数据输出寄存器:ODR),BSRR中的配置内容最终还是输入到ODR中。 GPIO初始化结构体(库函数操作): typedef struct { uint32_t GPIO_Pin; //设置引脚 GPIOMode_TypeDef GPIO_Mode; //设置模式:输入模式,输出模式,复用模式,模拟模式 GPIOSpeed_TypeDef GPIO_Speed; //GPIO的...
5. FMC总线扩展32路⾼速IO理解成GPIO的ODR寄存器就很简单了,其实就是⼀个东西。6. FMC扩展IO是对地址0x60001000的32bit数据空间的0和1的操作。GPIOA的ODR寄存器是对地址 0x40000000 + 0x18020000 + 0x14 空间的操作。但只能操作16个引脚。使⽤总线的优势就在这⾥了,相当于在GPIOA到GPIOK的基础上...
(GPIOx, GPIO_Pin, GPIO_PIN_RESET); } else { // 如果当前是低电平,则写高电平 HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_SET); } // 或者更简洁的方式,直接使用ODR寄存器进行位操作 // GPIOx->ODR ^= GPIO_Pin; // 这种方法直接对ODR寄存器进行位取反操作 } int main(void) { //...
通用输入输出端口GPIO
1,ADC选择ADC1+ADC3―――设置为DMA输出,输出到GPIOA,B, 2,同步时钟由TIM8的ETR端输入,作为TIM8的外部时钟2模式工作。然后有TIM8的TRGO 端触发ADC---打开ADC-TRGO的复用 3,要求ETR进入的脉冲,每2个上升沿触发一次ADC 4,使用TIM8-ETR触发ADC1 5,程序已经调试过,可以单独触发ADC1,ADC3 写此的主要目的是...