zoukankan      html  css  js  c++  java
  • STM32F072 基于HAL库的I2C通信问题记录

                 学习STM32已经有一段时间了,很幸运编程正式从工作之余的学习变成工作中的所需,而幸运的同时也带来了一些压力和困扰。一个问题卡主,就会耽误工作进度,而对于半吊子的我而言,程序中出现问题已经变成家常便饭。

                 今天来记录一下近期工作中遇到的问题。目前的项目是通过STM32F0这款MCU,与上位机(主机)(PC->labview程序)实现通信,并与下下位机(从机)(公司产品光模块->MCU->ADcU7023)实现通信,做到上位机对模块寄存器的R/W。试程序试了好久才把STM32和PC用HAL库的CDC类通信虚拟串口调通,现在硬件I2C通信又除了问题,以下是问题细节:

                1、使用HAL库自带的stm32072b_eval.c中自带的几个I2C读写函数,却发现在主程序中显示两个函数Undefined Symbol。。。

             这两个函数在stm32072b_eval.c中定义了,出现error之后我在stm32072b_eval.h中也定义了一遍,还是error,后来干脆尝试在main.c中加上extern 定义,也不行,因为这个问题,放弃使用HAL库eval的I2C函数了。。

          2、接着使用标准库的I2C函数移植成HAL库的,但是又发现如下问题,在标准库中,获取I2C flag Status的函数 I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG)在HAL库中变成了 __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__),但是后者的第一个参数用I2C名代替却一直报错。后来发现第一个参数@param  __HANDLE__   specifies the I2C Handle.但是替换成I2C_HandleTypeDef中的定义,还是报错,很无奈。

            目前就只能再探索,看能不能解决问题1,如果解决了,那基本上I2C的通信就不成问题,如果能解决问题2,对于我这种新手在库函数之间进行移植还是存在一定的挑战的。

  • 相关阅读:
    android项目启动应用,卸载应用,分享
    android项目复杂的listview
    android项目获得手机里所有的应用程序
    android项目获取指定目录下可用空间
    android项目实现电话自动挂断的功能
    android项目浮窗的移动
    android项目双击或者多击的实现
    C#设计模式之工厂方法与简单工厂
    C#二分查找法与拉格朗日查找法
    C#快速排序算法
  • 原文地址:https://www.cnblogs.com/godmode33/p/7993962.html
Copyright © 2011-2022 走看看