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

对网站二次开发的认识做网站的详细教程

对网站二次开发的认识,做网站的详细教程,51网址还有吗,濮阳住房建设厅网站正常写项目,用硬件只会更快。51没有IIC外设,我们需要软件模拟,在STM32中我们可以大胆使用硬件,只需要操作IIC外设对应的寄存器即可。 1.硬件电路设计 1.1配置 可以看到IIC模块挂在APB1系统总线上。 复用引脚PB10 PB11,底层协议硬…

正常写项目,用硬件只会更快。51没有IIC外设,我们需要软件模拟,在STM32中我们可以大胆使用硬件,只需要操作IIC外设对应的寄存器即可。

1.硬件电路设计

1.1配置

可以看到IIC模块挂在APB1系统总线上。

复用引脚PB10 PB11,底层协议硬件实现了,我们自己做好配置外设,他会自动根据协议产生通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器ODR,就能完成数据收发。

STM32外设的iic外设可用作主机和从机,没有明确规定。支持两种速率:100kbit/s,400kbit/s。

支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。

iic外设还支持SMBUS2.0协议,SMBUS与IIC类似。

1.2功能框图

控制寄存器2个 CR1 CR2

状态寄存器2个 SR1 SR2

2.寄存器初始化配置

用PB10 PB11与EEPROM进行通讯。

2.1寄存器详解

2.1.1控制寄存器CR

PE最后一步开

只要产生起始条件了,就可以成为主设备

SWRST:软件复位

2.1.2时钟控制寄存器 I2C_CCR

占空比:高电平占周期比例

TRISE:上升折线所占时钟周期

3.硬件实现IIC,寄存器案例

3.1 初始化配置

配置成复用开漏模式,开启内部上拉电阻。开启IO和IIC时钟使能。配置速率。

void I2C_Init(void)
{// 1. 配置时钟RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;RCC->APB1ENR |= RCC_APB1ENR_I2C2EN;// 2. GPIO配置,PB10、PB11 复用开漏输出,MODE - 11, CNF - 11GPIOB->CRH |= (GPIO_CRH_MODE10 | GPIO_CRH_MODE11 | GPIO_CRH_CNF10 | GPIO_CRH_CNF11);// 3. I2C 配置// 3.1 硬件工作模式配置I2C2->CR1 &= ~I2C_CR1_SMBUS; // I2C模式I2C2->CCR &= ~I2C_CCR_FS;    // 标准模式// 3.2 时钟频率 36MHzI2C2->CR2 |= 36 << 0;// 3.3 高电平时间:5us - 180个时钟周期;100kbpsI2C2->CCR |= 180 << 0;// 3.4 上升沿时间 1us - 36个时钟周期I2C2->TRISE |= 37;// 3.5 使能I2C模块I2C2->CR1 |= I2C_CR1_PE;
}

3.2 时序 

// 主机发出起始信号
uint8_t I2C_Start(void)
{// 产生起始信号I2C2->CR1 |= I2C_CR1_START;// 等待起始信号发出uint16_t timeout = 0xffff; // 超时时间while ((I2C2->SR1 & I2C_SR1_SB) == 0 && timeout){timeout--;}return timeout ? OK : FAIL;
}// 主机设置收发完数据之后发出停止信号
void I2C_Stop(void)
{I2C2->CR1 |= I2C_CR1_STOP;
}// 主机设置发送应答/非应答信号
void I2C_Ack(void)
{I2C2->CR1 |= I2C_CR1_ACK;
}
void I2C_NAck(void)
{I2C2->CR1 &= ~I2C_CR1_ACK;
}// 主机发送设备地址
uint8_t I2C_SendAddr(uint8_t addr)
{// 将要发送的地址写入DR,自动发送I2C2->DR = addr;// 等待地址成功发出(等待应答)uint16_t timeout = 0xffff; // 超时时间while ((I2C2->SR1 & I2C_SR1_ADDR) == 0 && timeout){timeout--;}I2C2->SR2; // 清除 ADDR 标志位return timeout ? OK : FAIL;
}// 主机发送一个字节
uint8_t I2C_SendByte(uint8_t byte)
{// 将要发送的数据写入DR,自动发送I2C2->DR = byte;// 等待字节发送完成(等待应答)uint16_t timeout = 0xffff; // 超时时间while ((I2C2->SR1 & I2C_SR1_BTF) == 0 && timeout){timeout--;}I2C2->DR; // 清除 BTF 标志位return timeout ? OK : FAIL;
}// 主机从SDA读取一个字节
uint8_t I2C_ReadByte(void)
{// 等待字节接收完成uint16_t timeout = 0xffff; // 超时时间while ((I2C2->SR1 & I2C_SR1_RXNE) == 0 && timeout){timeout--;}return timeout ? I2C2->DR : FAIL;
}

4.硬件实现IIC,HAL库写法

4.1 CUBEMX图形化界面配置

配置IIC引脚

IIC轻松配置完毕。

命名

因为与EEPROM通讯,最后需要对传输的数据进行窗口显示,开启串口

出现打开项目的窗口,一定先打开。会出现KEIL文件工程。

4.2 keil编译器配置

我们不能在图形化界面中生成EEPROM文件,我们需要自己添加。

之后就是老一套。勾勾减减即可。之后我们用VSCode打开。

4.3 代码编写

我们首先要将fputc重新写一下。这是基本操作了。

在usart.c里写fputc

int fputc(int ch, FILE *file)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);return ch;
}

因为M24c02不是cubemx生成,所以与我们生成的文件在函数声明上存在差异,逻辑一致,但只要把声明改改。

/** @Author: wushengran* @Date: 2024-09-23 14:07:07* @Description:** Copyright (c) 2024 by atguigu, All Rights Reserved.*/
#include "m24c02.h"// 初始化
void M24C02_Init(void)
{MX_I2C2_Init();
}// 写入一个字节,指定要写入的内部地址
void M24C02_WriteByte(uint8_t innerAddr, uint8_t byte)
{HAL_I2C_Mem_Write(&hi2c2, W_ADDR, innerAddr, I2C_MEMADD_SIZE_8BIT, &byte, 1, 1000);// 加入延迟,等待写入EEPROM完成HAL_Delay(5);
}// 读取一个字节(随机地址读)
uint8_t M24C02_ReadByte(uint8_t innerAddr)
{uint8_t byte;HAL_I2C_Mem_Read(&hi2c2, R_ADDR, innerAddr, I2C_MEMADD_SIZE_8BIT, &byte, 1, 1000);return byte;
}// 连续写入多个字节(页写)
void M24C02_WriteBytes(uint8_t innerAddr, uint8_t *bytes, uint8_t size)
{HAL_I2C_Mem_Write(&hi2c2, W_ADDR, innerAddr, I2C_MEMADD_SIZE_8BIT, bytes, size, 1000);// 加入延迟,等待写入EEPROM完成HAL_Delay(5);
}// 连续读取多个字节
void M24C02_ReadBytes(uint8_t innerAddr, uint8_t *bytes, uint8_t size)
{HAL_I2C_Mem_Read(&hi2c2, R_ADDR, innerAddr, I2C_MEMADD_SIZE_8BIT, bytes, size, 1000);
}

串口这里就没问题了,如果想验证,可以打印一些数据。

在main里引入

构建并烧写

串口传输没有问题。

然后可以针对性对字节写入,字节读取进行测验。

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

相关文章:

  • 竞拍网站做烂了网页设计的目的与要求
  • 下载素材的网站团购网站 如何做推广
  • 垂直型跨境电商平台seo短视频新地址在哪里
  • 怎样优化自己的网站深圳网页制作招聘网
  • 青海网站建设费用价格网站开发毕业答辩演讲稿范文
  • 公司网站建设需要多少钱千华网鞍山门户网站
  • 平台网站怎么建设电商网站建设如何
  • 用lnmp做网站建设一个最普通网站要多少钱
  • 网站建设方案书 百度网站建设免费模板下载
  • 网站开发外包公司坑济南网站建设 行知科技
  • 乐清网站制作推广重庆网站建设微信开发
  • 类似wordpress的博客怎么自己优化网站
  • 网站建设分前端和后台吗网站主题类型
  • 网站建设的主要作用wordpress左侧目录主题
  • 做程序的网站腾讯公司网站
  • 网站开发技术选型桂林象鼻山图片
  • wordpress好用的富文本编辑器如何做企业网站优化
  • html5美食网站青岛网站建设详细内容
  • asp个人网站怎么建设上海定制网站开发营销推广
  • 软件开发计划模板网站推广与优化方案
  • 郑州全网营销seo推广公司哪家好
  • 购物网站建设模板图片大公司网站建设建网站
  • 广州网站设计我选刻wordpress评论页面美化
  • 重庆市工程建设信息网新网站iis网站发布默认首页
  • 设计公司起名两个字南昌百度快速排名优化
  • 未备案网站 怎么处理专业企业展厅设计公司
  • 常州建设局考试网站微信公众号seo
  • 长沙本土网站建设公司做网站编辑有什么发展
  • 海南省住房和建设厅网站网站做的不好会有什么后果
  • 各大网站的名字建筑设计公司资质