历史上的今天
返回首页

历史上的今天

今天是:2024年09月27日(星期五)

正在发生

2021年09月27日 | stm8s跳出中断程序c语言,STM8S I2C总线中断程序

2021-09-27

/*==========================================================================================================

本源程序文件内部使用的一些操作指令的宏定义

==========================================================================================================*/

/*------------------------------------------------------------------------------------------------

输入/输出端口和引脚宏定义:(注:下列这些定义用以简化宏函数参数字符。)

------------------------------------------------------------------------------------------------*/

#define MFH_PIN_CFG_INPU_I2cScl                           MFH_PIN_CFG_INPU(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_CFG_INHZ_I2cScl                           MFH_PIN_CFG_INHZ(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_CFG_OOUT_I2cScl                           MFH_PIN_CFG_OOUT(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_CFG_OUTH_I2cScl                           MFH_PIN_CFG_OUTH(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_CFG_OUTL_I2cScl                           MFH_PIN_CFG_OUTL(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_OUT_SETH_I2cScl                           MFH_PIN_OUT_SETH(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_OUT_CLRL_I2cScl                           MFH_PIN_OUT_CLRL(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_IN_STATE_I2cScl                           MFH_PIN_IN_STATE(cDdrI2cScl, cPurI2cScl, cCirI2cScl, cOdrI2cScl, cIdrI2cScl, cBitI2cScl)

#define MFH_PIN_CFG_INPU_I2cSda                           MFH_PIN_CFG_INPU(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

#define MFH_PIN_CFG_INHZ_I2cSda                           MFH_PIN_CFG_INHZ(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

#define MFH_PIN_CFG_OOUT_I2cSda                           MFH_PIN_CFG_OOUT(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

#define MFH_PIN_CFG_OUTH_I2cSda                           MFH_PIN_CFG_OUTH(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

#define MFH_PIN_CFG_OUTL_I2cSda                           MFH_PIN_CFG_OUTL(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

#define MFH_PIN_OUT_SETH_I2cSda                           MFH_PIN_OUT_SETH(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

#define MFH_PIN_OUT_CLRL_I2cSda                           MFH_PIN_OUT_CLRL(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

#define MFH_PIN_IN_STATE_I2cSda                           MFH_PIN_IN_STATE(cDdrI2cSda, cPurI2cSda, cCirI2cSda, cOdrI2cSda, cIdrI2cSda, cBitI2cSda)

/*------------------------------------------------------------------------------------------------

MFHI2cInnEventReg( ) --------- 输入I2C总线的事件和状态寄存器值

MFHI2cChkEventReg( ) --------- 检查I2C总线事件状态寄存器中的事件状态值

MFHI2cInnEventMem( ) --------- 输入I2C总线的事件和状态存储器值

MFHI2cChkEventMem( ) --------- 检查I2C总线事件状态存储器中的事件状态值

------------------------------------------------------------------------------------------------*/

#if   (defined(_IAR_EW_AVR_))

#define MFHI2cInnEventMem( )          gucvI2cEvent                  =  TWSR

#define MFHI2cChkEventMem( )          (gucvI2cEvent & cI2cTwsrMask)

#elif ((defined(_IAR_EW_MCS51_)) || (defined(_KEIL_UV_MCS51_)))

#elif (   defined(_IAR_EW_STM8_)

|| defined(_COSMIC_STM8_) )                        // “......_STM8 编译器”条件编译开始

#ifdef _USE_STM8_FWLIB_                                   // “使用 STM8 FWLib 的库文件”条件编译开始

#else                                                     // “_USE_STM8_FWLIB_”

#define MFHI2cInnEventMem( )          NOTHING

//#define MFHI2cInnEventMem( )          gucvI2cEvent                  =  temp

#define MFHI2cChkEventMem( )          (gucvI2cEvent & cI2cEvtSr2Mask)

#endif                                                    // “_USE_STM8_FWLIB_”

#else

#error 错误:

#endif                                                    // “PreMcuIs__......”

/*------------------------------------------------------------------------------------------------

MFHI2cBusModSwRst( ) --------- 软件复位I2C模块,释放I2C总线

MFHI2cFlgEventClr( ) --------- 清0I2C总线事件中断标志位

MFHI2cIntEventClr( ) --------- 进入中断后,在中断句柄中,清0I2C总线事件中断标志位(在中断服务程序中)

MFHI2cIntEventChk( ) --------- 检查I2C总线事件中断状态值

MFHI2cIntEventOnn( ) --------- 使能I2C总线事件全部中断

MFHI2cIntEventOne( ) --------- 使能I2C总线事件中断、错误中断,禁止缓冲中断

MFHI2cIntEventOff( ) --------- 禁止I2C总线事件全部中断

MFHI2cBusErrorChk( ) --------- 检查I2C总线在收发过程中存在的全部错误状态值

MFHI2cBusErrorClr( ) --------- 清0I2C总线在收发过程中存在的全部错误标记

MFHI2cBusNackStar( ) --------- 发出 START 信号(起始条件),没有 ACK 脉冲

MFHI2cBusNackReps( ) --------- 发出重复 START 信号(重新开始条件),没有 ACK 脉冲

MFHI2cBusNackStop( ) --------- 发出 STOP 信号(结束条件),没有 ACK 脉冲

MFHI2cBusRdataAck( ) --------- 在接收之后发出 ACK 脉冲

MFHI2cBusRdatNack( ) --------- 在接收之后发出 NOT ACK

------------------------------------------------------------------------------------------------*/

#if   (defined(_IAR_EW_AVR_))

#define MFHI2cBusModSwRst( )          NOTHING

#define MFHI2cFlgEventClr( )          NOTHING

#define MFHI2cIntEventClr( )          TWCR                          =  (1<

(1<

(0<

(0<

(0<

#define MFHI2cIntEventChk( )          NOTHING

#define MFHI2cIntEventOnn( )          NOTHING

#define MFHI2cIntEventOne( )          NOTHING

#define MFHI2cIntEventOff( )          NOTHING

#define MFHI2cBusErrorChk( )          NOTHING

#define MFHI2cBusErrorClr( )          NOTHING

#define MFHI2cBusNackStar( )          TWCR                          =  (1<

(1<

(0<

(1<

(0<

#define MFHI2cBusNackReps( )          TWCR                          =  (1<

(1<

(0<

(1<

(0<

#define MFHI2cBusNackStop( )          TWCR                          =  (1<

(0<

(0<

(0<

(0<

#define MFHI2cBusRdataAck( )          TWCR                          =  (1<

(1<

(1<

(0<

(0<

#define MFHI2cBusRdatNack( )          TWCR                          =  (1<

(1<

(0<

(0<

(0<

#elif ((defined(_IAR_EW_MCS51_)) || (defined(_KEIL_UV_MCS51_)))

#elif (   defined(_IAR_EW_STM8_)

|| defined(_COSMIC_STM8_) )                        // “......_STM8 编译器”条件编译开始

#ifdef _USE_STM8_FWLIB_                                   // “使用 STM8 FWLib 的库文件”条件编译开始

#else                                                     // “_USE_STM8_FWLIB_”

推荐阅读

史海拾趣

苏州锋驰(Feng)公司的发展小趣事
根据反馈信号调整控制电路的参数,使输出电流稳定在设定值。
Aptiv公司的发展小趣事

Aptiv一直秉持开放合作的理念,积极与产业链上下游企业开展创新合作。公司与多家科技公司、研究机构以及高校建立了战略合作关系,共同推动自动驾驶技术的研发和应用。通过共享资源、优势互补,Aptiv不仅加快了自身的发展步伐,还为整个电子行业的进步做出了积极贡献。

ECLIPSE公司的发展小趣事

2001年,IBM公司决定推动一个开源项目,旨在打造一个全新的集成开发环境。这个项目名为Eclipse,旨在通过开放源代码的方式,吸引全球开发者共同参与。Eclipse的初始版本发布后,凭借其优秀的性能和友好的界面,迅速在开发者社区中引起了关注。

芯联(CHIPLINK)公司的发展小趣事

芯联集成非常重视企业文化建设,致力于打造一个高效、协作、创新的团队。公司倡导“以人为本”的管理理念,关注员工成长和发展,为员工提供良好的工作环境和福利待遇。同时,公司还建立了完善的激励机制和培训体系,激发员工的工作热情和创造力。这些努力使芯联集成在行业内树立了良好的口碑和形象,吸引了众多优秀人才加入公司。

DAPAudio公司的发展小趣事

DAPAudio深知产品质量对于企业长远发展的重要性。因此,公司投入大量资源用于提升产品的品质和生产效率。通过严格的质量控制流程和持续的技术创新,DAPAudio的产品在音质、稳定性和耐用性方面均达到了行业领先水平。这一努力不仅赢得了客户的信赖,也树立了公司高品质的品牌形象。

Abilis Systems公司的发展小趣事

DAPAudio深知产品质量对于企业长远发展的重要性。因此,公司投入大量资源用于提升产品的品质和生产效率。通过严格的质量控制流程和持续的技术创新,DAPAudio的产品在音质、稳定性和耐用性方面均达到了行业领先水平。这一努力不仅赢得了客户的信赖,也树立了公司高品质的品牌形象。

问答坊 | AI 解惑

【Jack——PIC 单片机操作系统的优点与试用】

在单片机的开发中,软件的过程式开发(跟自顶向下的过程式语言有直接关系)是长久以来的软件开发方法,但不能否认的是,存在数十种为人所知和不知的 RTOS,甚至是开发人员自己动手构造一个简单的 RTOS 以提高工作效率和改善软件构建的复杂性,这也 ...…

查看全部问答>

【藏书阁】基本电路理论实验指导

目录: 第一章:绪论 第二章:电路实验 第三章:电路的计算机辅助分析 第四章:电工测量与常用电工仪表的基本知识 第五章:常用仪器设备使用的基本知识 附录一:电路分析参考程序 附录二:计算机上机操作说明 详细信息: 书名:基本电路理 ...…

查看全部问答>

quartus2波形仿真问题

用quartus2进行波形仿真时,打不开仿真后的波形文件,是什么原因? 程序编译综合都没问题,加载网表也没出错。仿真提示也是成功的,但是在information里可以看到说波形文件里有错导致打不开仿真后的波形图。波形文件怎么会有错呢?…

查看全部问答>

关于Verilog的output,应该是reg型,还是wire型?

module d_ff (         clk,         rst_n,         datain,         dataout     );     ...…

查看全部问答>

CAB安装包修改注册表问题

各位大虾,       小弟需要一个将一个.dll文件打包安装到设备,同时修改注册表.我的.inf文件已经写好了,能正确生成.cab文件, 现在就是不知道怎么才能修改注册表,那位兄弟能指点以下?谢了。…

查看全部问答>

请问ARM9和ARM7比起来有那些缺点

我听说ARM9的功耗大,这是真的吗…

查看全部问答>

www.kingofcoder.com 100MB 免費空間 + 100MB mysql 空間

www.kingofcoder.com 100MB 免費空間 + 100MB mysql 空間 大家快點來呀 JSP, PHP, oracle空間, 很快就會開通, 大家快點登記吧 http://www.kingofcoder.com匯集大量各種編程語言文章、提供免費asp、php、jsp空間、免費mysql、oracle數據庫空間 ...…

查看全部问答>

MSK4203 PWM 电机控制器

MSK 4203PWM电机控制器/放大器 MSK 4203PWM电机控制器/放大器的特点: ★75V,10A的输出能力 ★自带高、低边驱动电路 ★内含死区保护和短路保护 ★与内部电路绝缘的外壳可直接安装散热器 ★四象限工作模式,力矩控制 ★符合MIL-PRF-38534的H级产品 ...…

查看全部问答>

TI LM3S M3的供电设计概述

TI LM3S M3的供电共有4组:3.3V数字,用于I/O供电和内置LDO供电,一般标号为VDD,需要外置供电提供;1.8V,一般标号为VDDC,为内核和逻辑供电,一般由内置LDO提供,直接连接到LDO管脚。查看器件的Errata 表,有的M3的LDO有问题,不能稳定供电 ...…

查看全部问答>