当前位置: 首页 > wzjs >正文

百度公司网站推广怎么做网站开发应该怎么做

百度公司网站推广怎么做,网站开发应该怎么做,网站图片展示源代码,怎么设计一个网页文章目录软件模拟I2C硬件的实现方式最近在研究I2C的屏幕使用。有两种使用方式,软件模拟I2C、硬件HAL使用I2C。软件模拟I2C 发送数据是通过设置引脚的高低电平实现的。 /*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(x)) #de…

文章目录

  • 软件模拟I2C
  • 硬件的实现方式

最近在研究I2C的屏幕使用。
有两种使用方式,软件模拟I2C、硬件HAL使用I2C。

软件模拟I2C

发送数据是通过设置引脚的高低电平实现的。

/*引脚配置*/
#define OLED_W_SCL(x)		GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(x))
#define OLED_W_SDA(x)		GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(x))/*引脚初始化*/
void OLED_I2C_Init(void)
{// 先关闭 I2C1 避免 PB6/PB7 被干扰// RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, DISABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_Init(GPIOB, &GPIO_InitStructure);OLED_W_SCL(1);OLED_W_SDA(1);
}/*** @brief  I2C发送一个字节* @param  Byte 要发送的一个字节* @retval 无*/
void OLED_I2C_SendByte(uint8_t Byte)
{uint8_t i;for (i = 0; i < 8; i++){OLED_W_SDA(Byte & (0x80 >> i));OLED_W_SCL(1);OLED_W_SCL(0);}OLED_W_SCL(1);	//额外的一个时钟,不处理应答信号OLED_W_SCL(0);
}

硬件的实现方式

/*** @brief 向OLED发送指令*/
void OLED_SendCmd(uint8_t cmd) {static uint8_t sendBuffer[2] = {0};sendBuffer[1] = cmd;OLED_Send(sendBuffer, 2);
}/*** @brief 向OLED发送数据的函数* @param data 要发送的数据* @param len 要发送的数据长度* @return None* @note 此函数是移植本驱动时的重要函数 将本驱动库移植到其他平台时应根据实际情况修改此函数*/#define I2C_TIMEOUT 100  // 超时时间(单位:ms)
uint8_t OLED_Send(uint8_t *data, uint8_t len) {
//  HAL_I2C_Master_Transmit(&hi2c1, OLED_ADDRESS, data, len, HAL_MAX_DELAY);HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(&hi2c1, OLED_ADDRESS, data, len, I2C_TIMEOUT);if (status != HAL_OK) {// 打印错误(如果你有串口)// printf("I2C Error: %d\n", status);// 重置 I2CI2C_Reset(&hi2c1);// 尝试重发一次status = HAL_I2C_Master_Transmit(&hi2c1, OLED_ADDRESS, data, len, I2C_TIMEOUT);// 如果还是不行,返回失败if (status != HAL_OK) {return 0;  // 失败}}return 1;  // 成功}

HAL_I2C_Master_Transmit 会引起卡死的操作,所以要设置一下超时时间为100ms。
也不知道底层是怎么配置的。

驱动 IC 为 SSD1306,程序重启的时候需要重新配置一下I2C,不然对应的硬件端口会卡死。

http://www.dtcms.com/wzjs/790120.html

相关文章:

  • 多屏网站建设装饰公司经营范围
  • 传媒公司制作网站做网站去哪推广好
  • 益阳网站建设asp网站搭建教程
  • 建网站 备案爱城市网官方下载
  • 邢台做wap网站价格和平网站建设公司
  • 培训教育网站开发网站建设实验七
  • 网站建设与制作视频教学百度经验登录入口
  • 官方网站开发需要几个技术人员网页美工设计实训中职期末试卷
  • 英国做电商网站有哪些咨询类网站模板
  • 网络平台设计开发遂宁网站seo
  • 提供网站建设搭建自己建网站卖东西
  • 开发wap网站 转dnf怎么做盗号网站
  • 建立网站需要准备的材料如何使用腾讯云建网站
  • 顺德网站建设基本流程学生网页设计成品网站
  • 网站建设用哪个app平泉县住房和城乡建设局网站
  • 个人做论坛网站需要哪些备案百度电脑版网页版入口
  • 网站开发工程师就业前景英德住房和城乡建设局网站
  • 做平台网站怎么赚钱利用电脑做网站
  • 做网站合同模板两学一做专题网站用途
  • 自己做网站用哪个软件岳阳seo公司咨询23火星
  • 湛江定制建站企业网站资源网
  • 百度个人网站申请怎么找做企业网站的
  • 企业服务网站制作免费一键生成短链接
  • 为什么大网站的百度快照更新速度慢还排第一广州定制网页设计
  • 做楼盘网站做网站机构图用什么工具
  • 济南街道办网站建设凡科互动修改器
  • 网站如何申请微信支付更换空间对网站的影响
  • 怎么把电脑当服务器做网站现在新手做电商能做好吗
  • 企业wap网站模板甘肃做网站哪家专业
  • 石景山建设网站中小企业网络工程建设