- 博客(3)
- 收藏
- 关注
原创 STM32-软件模拟和硬件实现I²C
若SDA此时为低电平,SCL先拉高,再拉高SDA,这样就先发送了一个结束信号,虽然对结果没什么影响,但会让程序时序混乱。之后就可以接收数据,此时会触发EV7事件,当接收到数据时,RxNE会被置1,这时将DR寄存器的内容读取即可清除该事件【清除RxNE】,同时应该响应ACK,将ACK位设置为1。首先需要先发送一个起始信号,会触发EV5事件,当起始信号发送成功后,SB位被置1,此时读SR1,然后再将地址写入DR寄存器即可清除该事件【清除SB】。当SCL为低电平时,SDA可以任意变化,以此来改变自身的电平。
2024-07-19 23:39:50
2027
原创 STM32—寄存器开发原理
通过芯片手册可以知道,GPIO端口A的地址刚好是0x40010800,恰好指针GPIOA是一个GPIO_TypeDef结构体指针,所以指针GPIOA就表示GPIO端口A。代码中使用GPIOA直接表示GPIOA寄存器对应的指针,GPIOA->CRL表示GPIOA对应偏移的GPIOA_CRL寄存器,那么为什么可也这样表示呢?头文件可以发现,GPIOA其实是一个 GPIO_TypeDef结构体指针,其地址值是GPIOA寄存器的基地址,是一个宏定义 GPIOA_BASE。就表示GPIOA_CRL寄存器了。
2024-07-11 17:19:41
674
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人