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,对于我这种新手在库函数之间进行移植还是存在一定的挑战的。

  • 相关阅读:
    (转)超过 130 个你需要了解的 vim 命令
    ubuntu下解压文件命令大全(转)
    HDU 4681 String
    Linux使用过程中常见问题及其解决方法
    Linux 命令 及 简单操作 学习
    HDU 4666 Hyperspace (最远曼哈顿距离)
    POJ 2049 Finding Nemo
    HDU 4655 Cut Pieces
    <textarea>标签的使用
    数据库插入失败 和回滚
  • 原文地址:https://www.cnblogs.com/godmode33/p/7993962.html
Copyright © 2011-2022 走看看