STM32F1HAL库的I2C应用注意事项

因为要用到I2C和流量传感器通信,也是第一次使用,直接使用stm32F1 HAL库来实现初始化,在STM32F10E评估板上直接和传感器通信,一次性成功通过。

当把调试好的流量计驱动程序往实际的板子上应用的时候发现会死等在某一处如下:

while(__HAL_I2C_GET_FLAG(hi2c, Flag) != RESET)
    {
      /* Check for the Timeout */
      if(Timeout != HAL_MAX_DELAY).......

以上代码是HAL库中的

网上查阅是I2C的固有BUG,真的是这样吗,官方的HAL库更新了好几代了都。。。

尝试

void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct;
  if(i2cHandle->Instance==I2C2)
  {
  /* USER CODE BEGIN I2C2_MspInit 0 */
  /*自已加了这一句代码,提前打开时钟,能解决前面的问题*/
  __HAL_RCC_I2C2_CLK_ENABLE();
  /* USER CODE END I2C2_MspInit 0 */

    /**I2C2 GPIO Configuration
    PB10     ------> I2C2_SCL
    PB11     ------> I2C2_SDA
    */
    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);       /* Peripheral clock enable */    __HAL_RCC_I2C2_CLK_ENABLE();

非常奇怪的时,在STM32f10E评估板上不用对CUBE生成的代码更改。

没有深入研究,好用就行。

时间: 2024-10-12 16:40:06

STM32F1HAL库的I2C应用注意事项的相关文章

ArcGIS符号库serverstyle文件编辑注意事项

当写程序对serverStyle文件进行编辑的时候 ,必须注意以下几条: 1.只使用IStyleGallery接口是无法修改serverstyle的,必须用IStyleGalleryStorage接口且指定targetFile属性.暂且理解为一种保护措施吧,原文件只读不写,targetFile所指定的临时文件可进行写入操作. 2.指定临时文件后本人AddItem多次仍不成功,经过反复测试,结论为本人所要修改的serverStyle文件太老旧的缘故,与当前使用的ArcGIS10.1平台不符.于是将

i2c总线注意事项和在linux下使用实战

i2c总线注意事项和在linux下使用实战 仔细阅读上图中的下部分文字. 注意你的i2c_msg发送方式,决定了是否有pause. 注意图中,什么叫sr. 注意图上说的什么样的才是真i2c协议 i2c设备驱动涉及的linux i2c api:参见include/linux/i2c.hi2c_transfer()i2c_master_send().i2c_master_recv ()i2c_smbus_xfer()struct i2c_driverstruct i2c_clienti2c_get_

Elasticsearch之curl创建索引库和索引时注意事项

前提, Elasticsearch之curl创建索引库 Elasticsearch之curl创建索引 注意事项 1.索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号 2.如果没有明确指定索引数据的ID,那么es会自动生成一个随机的ID,需要使用POST参数 curl -XPOST http://192.168.80.200:9200/zhouls/emp/ -d '{"name" : "tom"}' 3.如果想要确定我们创建的都是全新的数据 1:使用随机I

【项目】静态库打包的一些注意事项

今天打包的时候,出现了一些问题: localhost:~ LV$ lipo -info /Users/LV/Library/Developer/Xcode/DerivedData/FaceAPI-eryqzwkpzlhqgsczyrzogeimufsd/Build/Products/Debug-iphoneos/libFaceAPI.a input file /Users/LV/Library/Developer/Xcode/DerivedData/FaceAPI-eryqzwkpzlhqgsc

C++11和Boost库

C++11标准中引入了很多Boost库中的东西,对于所有人来说,完全可以使用C++11来替代之前使用的boost库. 但是还有一些事项需要我们注意. 发现了一篇好文,出处: https://meetingcpp.com/index.php/br/items/c11-and-boost.html Some parts of the Standard Library in C++11 are predated in boost. When playing around with C++11, you

库链接的问题

编译: 编译过程是以每个.cpp文件为独立的编译单位的,生成一个个.obj 编译过程,将引用文件在.cpp文件中展开,并检查是否有正确的声明.如果该函数没有定义,编译器认为在连接过程可以在其他.obj文件中找到. 头文件路径是通过编译器默认设置以及用户通过-I选项添加的,默认的include路径,可以通过指令来查看 echo | g++ -v -x c++ -E - 连接过程,将上面没有定义的函数,在其他.obj中查找定义,如果没有找到,则会报undefine reference的问题. 而查找

使用Xcode 5创建Cocoa Touch Static Library(静态库)

转自:http://blog.csdn.net/jymn_chen/article/details/21036035 首先科普一下静态库的相关知识: 程序编译一般需经预处理.编译.汇编和链接几个步骤.对于我们项目中的一些公共代码,如果想要对其进行复用,可以把这些代码编译成一个静态库文件.在链接步骤中,链接器会从库文件中取得对应的代码并生成可执行文件.静态库的执行文件中包含了库中的完整代码,但是多次使用会产生多份冗余拷贝. 静态库和动态库的区别在于静态库在链接阶段被复制,与程序的运行阶段无关:动态

【Python笔记】如何编译不依赖lapack和atlas库的NumPy包

NumPy是科学计算方面的一个Python库,在数据挖掘或机器学习或科学统计等领域经常被用到,官网在这里. 在实际业务中,为发挥NumPy的高性能,在编译NumPy时会依赖一些经过特别优化的第三方科学计算库.对于初次接触NumPy的新手来说,从源码编译安装依赖外部库的NumPy通常不是一个简单的任务. 事实上,NumPy这个Python包本身不需依赖任何第三方库就能完成编译和安装使用,只不过其计算性能会受到影响. 本篇笔记记录的是如何在不依赖外部库的情况下来编译使用NumPy,这样做为了理清Nu

Linux网卡配置及学习linux的注意事项

一.网卡配置 1.ifconfig网卡信息,配置IP ifconfig eth0 192.168.2.102 2.修改网卡配置(连接不了可能是IP给占用了) 进入编辑界面命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0 进入编辑模式修改配置参数:i 退出编辑:Esc 退出保存:‘:wq’ DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0 BOOTPROTO=static #设置网卡获得ip地址的方式,可能