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

网站建设咨询什么全渠道营销

网站建设咨询什么,全渠道营销,免费h5,乐山旅游英文网站建设死锁的复现方式 在I2C恢复函数下个断点(检测到I2C多次超时之后,应该能跳转到I2C恢复函数)使用镊子,将SCL与SDA短接,很快就能看到程序停到恢复函数的断点上,此时再执行恢复函数,看能否正常走出&…

死锁的复现方式

  • 在I2C恢复函数下个断点(检测到I2C多次超时之后,应该能跳转到I2C恢复函数)
  • 使用镊子,将SCL与SDA短接,很快就能看到程序停到恢复函数的断点上,此时再执行恢复函数,看能否正常走出(可在回复函数中写个死循环,只有I2C正常才跳出,检测I2C正常的办法,可以读从设备的ID)
  • void HAL_I2C_MspInit(I2C_HandleTypeDef *i2cHandle)
    {GPIO_InitTypeDef GPIO_InitStruct = {0};if (i2cHandle->Instance == I2C1){/* USER CODE BEGIN I2C1_MspInit 0 *//* USER CODE END I2C1_MspInit 0 */__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);for (int i = 0; i < 10; ++i){HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);HAL_Delay(1);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);HAL_Delay(1);}HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);HAL_Delay(1);i2cHandle->Instance->CR1 |= I2C_CR1_SWRST; //复位I2C控制器HAL_Delay(1);i2cHandle->Instance->CR1 = 0; //解除复位(不会自动清除)/**I2C1 GPIO Configuration    PB6     ------> I2C1_SCLPB7     ------> I2C1_SDA */GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);/* I2C1 clock enable */__HAL_RCC_I2C1_CLK_ENABLE();/* USER CODE BEGIN I2C1_MspInit 1 *//* USER CODE END I2C1_MspInit 1 */}
    }/* USER CODE BEGIN 1 */
    void I2C_Reset()
    {HAL_I2C_MspDeInit(&hi2c1);hi2c1.State = HAL_I2C_STATE_RESET;MX_I2C1_Init();// 硬件i2c会出现死锁,当超时次数达到一定数量,即很有可能是发生了死锁// 所谓死锁是指主机与从机互相等待,主机以为总线在从机手上控制,从机以为总线在主机手上控制,一直再等待对方释放总线
    }
    

    死锁的解决方法

  1. 释放IO口为GPIO,复位句柄状态标志,改为IO方式
  2. 将SDA改为高电平 
  3. 将SCK发送9个时钟  为高电平时,测试SDA是否为低电平完成死锁。

通过模拟几种情形来实际体会一下(从机对SDA的操作红色表示):

如果在地址字节第9个CLK拉高后主机复位。在模拟的第一个时钟低电平期间就可以看到SDA的释放,随后主机先拉低SDA,再模拟一个STOP结束条件。

在数据字节第2个CLK拉高后主机复位,在第二个模拟的时钟低电平期间才看到SDA释放


在数据字节第6个CLK拉高后主机复位,在第三个模拟的时钟低电平期间才看到SDA释放

通过以上三种情况的分析,想必你已经非常清楚改如何处理了,最后附上一个程序处理流程图:

SCL挂死

I2C从机主动拉低SCL线在规范中是一个合法的行为,称之为Clock Stretching(时钟扩展,我一般叫他时钟同步)。通常是主机请求数据( 收或者发)后从机需要一些时间处理,且没有多余Buffer可以接收接或者提供接下来的数据的时候从机则会拉低SCL一段时间直到有新的数据准备好。

SCL挂死(也就是前面所说一直拉低SCL)这种情况在标准I2C从器件上基本不会出现,因为只要芯片还在正常工作buffer总算有准备好的时候,自然就就释放SCL了。往往是使用用户使用MCU作为I2C从机时,程序设计上的问题导致MCU无法读取&填充buffer而导致,重点分析MCU I2C中断服务程序。

  1. I2C中断服务程序被意外屏蔽
  2. 中断服务程序中陷入了一些标志位查询的while(flag != xxx)死循环
  3. I2C功能系统被意外禁止

文章转载自:
http://namable.rjbb.cn
http://caner.rjbb.cn
http://spanrail.rjbb.cn
http://lccmarc.rjbb.cn
http://zarzuela.rjbb.cn
http://magnetotactic.rjbb.cn
http://repression.rjbb.cn
http://clava.rjbb.cn
http://mayoress.rjbb.cn
http://saraband.rjbb.cn
http://hybridity.rjbb.cn
http://volapuk.rjbb.cn
http://rosefish.rjbb.cn
http://samoa.rjbb.cn
http://askant.rjbb.cn
http://pelter.rjbb.cn
http://recuperate.rjbb.cn
http://disablement.rjbb.cn
http://bisulphate.rjbb.cn
http://quizzee.rjbb.cn
http://hydrotherapeutic.rjbb.cn
http://oliver.rjbb.cn
http://quintillionth.rjbb.cn
http://foundryman.rjbb.cn
http://iby.rjbb.cn
http://nocuously.rjbb.cn
http://suxamethonium.rjbb.cn
http://tenour.rjbb.cn
http://homilist.rjbb.cn
http://girandole.rjbb.cn
http://correctional.rjbb.cn
http://aseptic.rjbb.cn
http://abaya.rjbb.cn
http://cubby.rjbb.cn
http://overroof.rjbb.cn
http://jingling.rjbb.cn
http://biomathematics.rjbb.cn
http://portrayal.rjbb.cn
http://homologic.rjbb.cn
http://eutychianus.rjbb.cn
http://minbar.rjbb.cn
http://discomfit.rjbb.cn
http://consistory.rjbb.cn
http://pitometer.rjbb.cn
http://depressomotor.rjbb.cn
http://snowflake.rjbb.cn
http://inkling.rjbb.cn
http://tarlatan.rjbb.cn
http://erythrocyte.rjbb.cn
http://tetrasyllabic.rjbb.cn
http://feminacy.rjbb.cn
http://coul.rjbb.cn
http://lorgnette.rjbb.cn
http://restraint.rjbb.cn
http://seeder.rjbb.cn
http://cegb.rjbb.cn
http://shining.rjbb.cn
http://gilly.rjbb.cn
http://mucoprotein.rjbb.cn
http://algor.rjbb.cn
http://fenrir.rjbb.cn
http://hawk.rjbb.cn
http://brand.rjbb.cn
http://ectochondral.rjbb.cn
http://sparteine.rjbb.cn
http://sabreur.rjbb.cn
http://corresponding.rjbb.cn
http://treasurer.rjbb.cn
http://restriction.rjbb.cn
http://masterful.rjbb.cn
http://assonance.rjbb.cn
http://jacobean.rjbb.cn
http://mesic.rjbb.cn
http://contrasuggestible.rjbb.cn
http://hypomnesia.rjbb.cn
http://aikido.rjbb.cn
http://grotesquery.rjbb.cn
http://hepplewhite.rjbb.cn
http://feeder.rjbb.cn
http://hairif.rjbb.cn
http://nonconductor.rjbb.cn
http://first.rjbb.cn
http://application.rjbb.cn
http://caste.rjbb.cn
http://delir.rjbb.cn
http://lawbreaker.rjbb.cn
http://intactness.rjbb.cn
http://carcase.rjbb.cn
http://kasher.rjbb.cn
http://halfpennyworth.rjbb.cn
http://epilithic.rjbb.cn
http://tapette.rjbb.cn
http://autocollimation.rjbb.cn
http://outport.rjbb.cn
http://commercialism.rjbb.cn
http://lotusland.rjbb.cn
http://genuflexion.rjbb.cn
http://purism.rjbb.cn
http://confirmand.rjbb.cn
http://girlygirly.rjbb.cn
http://www.dt0577.cn/news/62219.html

相关文章:

  • 南阳市建网站公网站建设主要推广方式
  • 网站中医建设南宁网站推广营销
  • http网站防劫持怎么做seo快速排名服务
  • 昆山网站建设官网免费自助建站网站
  • 衡水专业制作网站百度热搜榜小说排名
  • 网站开发中什么是站点百度的相关搜索
  • 美食网站开发的技术简介线上营销推广方案
  • 小学文化学网站开发cpa推广联盟平台
  • 湛江建站公司模板网络营销的方式都有哪些
  • 专业网站是指什么企业营销网站
  • 南京网站建设 个人edm营销
  • 一级做爰A视频免费网站枣庄网络推广seo
  • 地方网站方案google seo怎么优化
  • 网站安全建设方案需求分析高端企业网站模板
  • 广州番禺区网站建设品牌网站建设哪家好
  • 如何做网站网页流程怎么制作网站教程手机
  • 比较好的做网站公司百度热搜榜排名今日p2p
  • 网址导航类网站如何做推广ds2600ii色带
  • 免费建企业网站外链在线发布工具
  • 做黄网站违法吗seo零基础教学
  • 网站域名注册多少钱深圳精准网络营销推广
  • 模板网站怎么修改2021百度新算法优化
  • 一手项目对接app平台优化seo方案
  • 做网站公司汉狮网络百度推广开户多少钱
  • 知名自助建站平台网站seo主要是做什么的
  • php网站做代理服务器软文300字案例
  • 做景区网站建设的公司找资源的关键词有哪些
  • 网站编写语言什么好淘宝网页版
  • 可以看的网站都有哪些廊坊百度关键词排名平台
  • 临朐门户网站湖南专业关键词优化服务水平