#define SDA_OUT() {GPIOA->CRL&=0X0FFFFFFF;GPIOA->CRL|=(u32)3<<28;} 上面的意思, 其实就是切换PA_7的模式, 控制模式的寄存器叫CRL跟CRH, 如下图:CRL(引脚0-7):CRH(引脚8-16):研究了一下,GPIOA->CRL&=0X0FFFFFFF;GPIOA->CRL|=(u32)8<<28;...
STM32寄存器操作端口模式SDA_OUT()/SDA_IN() 《正文开始》 AI检测代码解析 #define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;} #define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;} 1. 是不是有点长?其实不难!相信用寄存器写过stm8s的就明白了,...
那么, 如果要修改PA_11的配置, 就修改CRH, 移动3*4次就好, #define SDA_IN() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=(u32)8<<12;} #define SDA_OUT() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=(u32)3<<12;} 经验证, 成功.
//IO 方向设置 #define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;} #define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;} 1. 2. 3. 进过研读开发手册大概解决了这个问题。 STM32 的 IO 口可以由软件配置成如下 8 种模式: 1、输入浮空 2、输入上拉 3、输入...
1、空闲时SDA跳变,会产生一个S和一个P,幸好这个P会产生一个中断,我们可以用一个收到P就软复位硬件I2C的策略。这样能避免空闲时SDA跳变带来的干扰。 2、空闲时SCL跳变,这是一个I2C的错误信号,但是STM32却会认为这是一个S,所以SCL跳变会导致BUSY置位,而月不会像SDA跳变那样会产生一个P中断,如果在单主的...
不一定。看自己需要进行购买。stlink具有在线调试,现在程序,读写flash的功能。是st单片机的配合工具,在其他单片机可能就不实用了。调试单片机可以用jlink,stlink都可以。建议jlink,这种可以调试所有的arm,不仅仅是stm32。
{SDA_OUT();//SDA设置为输出IIC_SCL=0;IIC_SDA=0;//起始都是低电平delay_us(4);IIC_SCL=1;//SCL变为高电平IIC_SDA=1;//当SCL为低时,SDA由低电平转变为高电平产生停止信号delay_us(4);}/* 丛机应答ACK */u8IIC_Wait_Ack(void){u8ucErrTime=0;SDA_IN();//SDA设置为输入IIC_SDA=1;delay_...
复用功能的推挽输出_AF_PP ——片内外设功能(I2C 的 SCL,SDA) 复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS) STM32 设置实例: 1、模拟 I2C 使用开漏输出_OUT_OD,接上拉电阻,能够正确输出 0 和 1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读 IO的值;使用GPIO_...
1.打开STM32CubeMX软件,配置手势识别引脚PB6(IIC_SCL)、PB7(IIC_SDA); 2.设置引脚模式为推挽输出模式,初始化电平为高电平 4.生成代码 1.引脚模式配置函数 2.手势模块底层接口IIC协议函数 起始信号 钟线为高电平时,数据线由高变低为起始信号 /***发送起始信号*** * *说明:时钟线为高电平时,数据线...
硬件连接方式:1.TFT1.44寸彩屏接线GND电源地VCC接5V或3.3v电源SCL接PC8(SCL)SDA接PC9(SDA)RST接PC10DC接PB7CS接PB8BL接PB112.蜂鸣器VCC--->3.3VDAT--->PA6GND--->GND3.酒精检测传感器MQ3VCC--->3.3VGND--->GNDDAT--->PA14.板载LED灯接线LED1---PA8LED2---PD25.板载按键接线K0---PA0K1--...