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

网站开发用怎么语言wordpress 页面调新闻

网站开发用怎么语言,wordpress 页面调新闻,浙江seo,wordpress访问需要密码【STM32 HAL库】IIC通信与CubeMX配置 前言理论IIC总线时序图IIC写数据IIC读数据 轮询模式CubeMX配置应用示例AHT20初始化初始化函数读取说明读取函数 中断模式CubeMX配置状态机图fsm.caht20.c DMA模式CubeMX配置代码 前言 本文为笔者学习 IIC 通信的总结#xff0c;基于keysk… 【STM32 HAL库】IIC通信与CubeMX配置 前言理论IIC总线时序图IIC写数据IIC读数据 轮询模式CubeMX配置应用示例AHT20初始化初始化函数读取说明读取函数 中断模式CubeMX配置状态机图fsm.caht20.c DMA模式CubeMX配置代码 前言 本文为笔者学习 IIC 通信的总结基于keysking的视频内容如有错误欢迎指正 理论 IIC总线时序图 IIC写数据 IIC读数据 通信流程以AHT20为例 STM32主机)发送 IIC 启动信号STM32 发送 AHT20(从机)地址AHT20 识别地址并发送 ACK 信号AHT20 发送数据至 STM32(发送完1 字节后结束STM32 发送 ACK 信号表示接收完成STM32重复接收下一个字节直至AHT20数据发送完成STM32 发送 IIC 结束信号 IIC vs 串口通信 IIC为半双工串口为全双工 IIC 可支持多设备通信: IIC通信为总线协议总线上每个从机都有唯一的地址主机IIC通信先发送从机地址非目标从机会忽略数据 同步通信: STM32 的晶振提供统一时钟源为IIC总线上的从机提供统一时钟信号尤其可为无晶振提供精确时钟信号的小型传感器提供精确的同步时钟信号 轮询模式CPU持续搬运数据程序执行被阻塞 中断模式CPU只在搬运数据时介入正常情况下不阻塞程序 DMA模式DMA自动搬运数据无需CPU介入节省资源 轮询模式 以AHT20温湿度传感器为例 CubeMX配置 应用示例 AHT20初始化 初始化函数 #include aht20.h #define AHT20_ADDRESS 0x70void AHT20_Init() {uint8_t readBuffer; //定义读缓冲器HAL_Delay(40); // 上电后等待40msHAL_I2C_Master_Receive(hi2c1, AHT20_ADDRESS, readBuffer, 1, HAL_MAX_DELAY); // 读取AHT20 1字节状态字 判断AHT20当前状态if ((readBuffer 0x08) 0x00) { // 检查状态字的 Bit[3] 是否为 1uint8_t sendBuffer[3] {0xBE, 0x08, 0x00}; // 初始化命令初始化指令初始化参数HAL_I2C_Master_Transmit(hi2c1, AHT20_ADDRESS, sendBuffer, 3, HAL_MAX_DELAY); // 发送初始化命令} }ps 1.AHT20 地址定义为 0x70实际为 7 位地址左移 1 位后补 1 位用于区分读/写操作0 表示写1 表示读。 2.I²C 的发送与接收函数先发送从机地址待从机应答后再发送发送或接收请求。因此初始化函数中的接收操作是在发送 AHT20 地址后接收其状态字。 读取说明 AHT20数据存放形式 除去IIC硬件地址外一共6个字节的数据1字节状态字3.5字节湿度数据3.5字节温度数据 信号转换 读取函数 AHT20读取温湿度数据函数 void AHT20_Read(float *Temperature, float *Humidity) {uint8_t sendBuffer[3] { 0xAC, 0x33, 0x00 }; //发送缓冲区存放触发测量命令参数uint8_t readBuffer[6]; //定义接收缓冲区(6个字节6*8bits分别对应状态、湿度数据1、湿度数据2、湿度和温度数据3、温度数据4、温度数据5.共6字节HAL_I2C_Master_Transmit(hi2c1, AHT20_ADDRESS, sendBuffer, 3, HAL_MAX_DELAY); //发送触发测量命令AHT20开始测量HAL_Delay(75);//等待75ms待测量完成HAL_I2C_Master_Receive(hi2c1, AHT20_ADDRESS, readBuffer, 6, HAL_MAX_DELAY);//判断状态字(readbuffer[0]的Bit[7]是否为0也即状态字的第八位(最高位)是否为0)if ((readBuffer[0] 0x80) 0x00) {uint32_t data 0; //32位data用来存放20位的湿度数据和温度数据// 计算湿度(位运算拼接数据)data ((uint32_t)readBuffer[3] 4) ((uint32_t)readBuffer[2] 4) ((uint32_t)readBuffer[1] 12);*Humidity data * 100.0f / (1 20); //相对湿度转换// 计算温度(位运算拼接数据)data (((uint32_t)readBuffer[3] 0x0F) 16) ((uint32_t)readBuffer[4] 8) (uint32_t)readBuffer[5];*Temperature data * 200.0f / (1 20) - 50; //温度转换} }中断模式 基本原理同串口的中断模式发送 但因为I2C通信协议的复杂性和多步骤的工作流程使得状态机成为管理I2C中断与DMA模式的有效手段 仅依赖发送和接收完成的中断嵌套没有标志位的参与也难以完成逻辑处理所以状态机是必须的 CubeMX配置 以AHT20温湿度传感器为例 状态机图 状态机标志位 // 0: 初始状态 发送测量命令 1: 正在发送测量命令 2: 测量命令发送完成 等待75毫秒后读取AHT20数据 3: 读取中 4: 读取完成 解析并展示数据然后恢复到初始状态 uint8_t aht20State 0; //定义并初始化aht20初始状态为初始状态fsm.c void fsm(void) {switch(aht20State)case 0: //向aht20发送测量命令并切换状态为发送中aht20_measure();aht20State 1;break;case 1: //发送中状态不执行任何操作待发送完成后在中断回调函数中切换状态break;case 2: //发送完成状态下延时75ms后发送获取aht20温湿度数据开始接收aht20的温湿度数据并切换状态为读取中HAL_Delay(75);aht20_get();aht20State 3;break;case 3: //读取中状态不执行任何操作待读取完成后在中断回调函数中切换状态break; case 4: //读取完成状态时进行aht20的温湿度数据解析并发送给上位机。延时1s后切换状态为初始状态AHT20_Analysis(temperature, humidity);sprintf(message, 温度: %.1f ℃, 湿度: %.1f %%\r\n, temperature, humidity);HAL_UART_Transmit(huart2, (uint8_t*)message, strlen(message), HAL_MAX_DELAY);HAL_Delay(1000);aht20State 0;break; }void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) {if (hi2c hi2c1) {aht20State 2; //在发送完成中断中实现状态切换} }void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) {if (hi2c hi2c1) {aht20State 4; //在接收完成中断中实现状态切换} }aht20.c 将AHT20的逻辑代码拆分为最基本的功能模块以便状态机在各个状态下执行相应任务 void aht20_measure() {static uint8_t sendBuffer[3] { 0xAC, 0x33, 0x00 };HAL_I2C_Master_Transmit_IT(hi2c1, AHT20_ADDRESS, sendBuffer, 3); }void aht20_get() {HAL_I2C_Master_Receive_IT(hi2c1, AHT20_ADDRESS, readBuffer, 6); }void aht20_analysis(float *Temperature, float *Humidity) {if ((readBuffer[0] 0x80) 0x00) {uint32_t data 0;data ((uint32_t)readBuffer[3] 4) ((uint32_t)readBuffer[2] 4) ((uint32_t)readBuffer[1] 12);*Humidity data * 100.0f / (1 20);data (((uint32_t)readBuffer[3] 0x0F) 16) ((uint32_t)readBuffer[4] 8) (uint32_t)readBuffer[5];*Temperature data * 200.0f / (1 20) - 50;} }DMA模式 CubeMX配置 代码 只需将上述I2C中断模式收发的函数改为DMA模式收发即可 也即 IT — DMA
http://www.hkea.cn/news/14383575/

相关文章:

  • 织梦网站图标更换基于wordpress学校网站
  • 设计一个网站需要多久网站建设详细报价单
  • 网站建设虚拟主机做海报找素材的网站
  • 上海手机网站建设电话如何建设一个双语的网站
  • 旅游网站建设的技术可行性上海网络推广
  • wordpress页面关键词seo网站推广如何做
  • 如何选择家居网站建设上海今天新闻发布会直播
  • 根据网站集约化建设要求深圳龙岗房价多少钱一平方米
  • 亚马逊网站类型下载京东网上购物
  • 江苏城乡建设教育网站优化设计
  • php安防企业网站源码推广网站有哪些
  • 无锡网站建设选千客云网络罗村网站制作
  • 大连哪家网站公司好网站建设网点
  • qq怎么做自己的网站中企动力制作的网站
  • 古典网站建设公司推广营销app
  • 青岛 网站维护苏州网站外包
  • 做网站采集内容国内做服装趋势的网站
  • 鞍山制作公司网站的公司做网站制作公司
  • 常州制作网站信息旅游网站建站目的
  • 网站建设制作 企业站开发哪家好wordpress开发软件
  • 网站建设入门教程pdf万州做网站
  • 外贸海外网站推广wordpress会员浏览
  • 昆明建设厅网站企业网站建设要
  • 网站开发主框架一般用什么布局郯城县网站建设
  • 简述制作网站的主要流程做刷单网站犯法吗
  • 天津网站设计制作公司建设网站要注意什么
  • 互动网站设计网站界面ui设计
  • 手机网站设计企业平面设计网站排行榜
  • 怎么管理好自己的网站百度推广优化是什么?
  • 站外推广厦门网页