历史上的今天

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

正在发生

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

发布者:本人在 关键字:stm8s  c语言  I2C总线 手机看文章 扫描二维码
随时随地手机看文章

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

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

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

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

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

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

#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_”

[1] [2]
关键字:stm8s  c语言  I2C总线 引用地址:stm8s跳出中断程序c语言,STM8S I2C总线中断程序

上一篇:STM8硬件I2C事件锁死
下一篇:stm8s跳出中断程序c语言,STM8 UART接收中断程序

推荐阅读

屏幕是我们每天观看时间最久的事物之一,可多年来,中国电子工业一直笼罩在“缺芯少屏”的焦虑中。从改革开放初期实现彩电显像管国产化的辉煌,到近年来中国企业在液晶显示面板领域的重新崛起,一部“中国屏”的辛酸史,就是改革开放以来中国人追求自主技术创新的奋斗史。 技术替代风暴来袭 中国彩管工业一朝崩溃 2004年,9月的陕西咸阳已有了一丝冷意。这...
1994年“巴黎统筹委员会”正式宣告后,国外EDA公司取消了对中国的禁运,中国急于快速发展集成电路产业,却又无暇补上设计方法学这一堂课,对国外的EDA公司的依赖性也就一直延续到了现在。在日前举行的2019中国集成电路设计大会上,国产EDA龙头企业华大九天董事长刘伟平指出,全球前5大EDA公司都是美国企业,总市占率高达95%。在集成电路领域,EDA工具多达...
30多年来,Fraunhofer IIS的音频和媒体技术部门一直在帮助制定音频和动画制作领域的全球标准和技术。从创建mp3开始,到AAC和数字电影倡议(Digital Cinema Initiative)测试计划的共同开发,各种消费电子设备、计算机和移动电话都使用Fraunhofer IIS的系统和技术。最近,我有机会与Fraunhofer IIS的低延迟音频编码组负责人Markus Schnell就新的低复...
微软本周发布了新款 Surface Duo 2,预装 Android 11 系统。据 The Verge 报道,微软正致力于在年内为初代 Surface Duo 推送 Android 11 更新。  “我们仍然致力于为 Surface Duo 提供更新,努力在今年年底之前将 Android 11 带给现有客户,”微软发言人在一份声明中表示。  Android 11 为双屏设备带来了一些优化支持...

史海拾趣

问答坊 | AI 解惑

呵呵,我想申请电子书下载板快的斑竹

呵呵,我想申请电子书下载板快的斑竹!!!可以吗? …

查看全部问答∨

过滤驱动程序中IRP_MJ_SCSI的下一层是什么?

最近研究U盘过滤驱动,想先读取U盘的扇区,但是一直读不到。从网上找到几个读扇区的代码,也不管用,后来发现是因为重路了。因为我将过滤驱动挂在注册表HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{36FC9E60-C465-11CF-8056- ...…

查看全部问答∨

请教 wince 断点调试,为什么设置的断点不停? 以前同样的断点就有效,现在不知道改了哪里,断点都不停了?

请教 wince 断点调试时,为什么设置的断点不停?  以前同样的断点有效,现在不知道改了哪里,断点都不停了?…

查看全部问答∨

求助:vxworks内核任务调度问题?

在组件里添加组件“Include_VX_TRADITIONAL_SCHEDULER"后,内核采用的内核调度策略为传统的调度策略。 在kernel program guide里有如下描述: The vxworks traditional scheduler provide priority_based preemptive scheduling as well as th ...…

查看全部问答∨

弱弱地问一下,78系列稳压器输入端短路什么意思?

VD为保护二极管,当输入端短路时,C3通过VD放电。。。,请问输入端短路什么意思?本人新手,麻烦讲的详细点,谢谢!…

查看全部问答∨

AT89S51单片机ISP下载线

各位师兄:           小弟刚学的是51单片机,想自己做一个ISP下载头。所以,想各位师兄大虾帮忙!…

查看全部问答∨

扫盲帖:电感式DC-DC升压器原理

这不是什么高手大作,只是个扫盲帖,适用于不了解电感特性,却又对升器器感兴趣的同志们.高手免入.不知道要发这个贴子到哪个版块,版主们帮忙处理下. 为了节省篇幅,很多原理性的知识我点到为止,以空间换时间,有兴趣深入了解的可以查阅相关资料和提问. ...…

查看全部问答∨

LPC4337 IAP升级问题。

我用的LPC4337,我想使用在线升级功能,于是弄了三个工程。 BOOTSEL工程:起始地址0x1A000000 大小0x2000 BOOT   工程:起始地址0x1A002000 大小0x6000 IAP    工程:起始地址0x1A008200 大小0x17E00 BOOTSEL功能:选择 ...…

查看全部问答∨

code warrior 5.1打不开MCP文件

第一次打开mcp文件以后关掉生成了一个old.mcp的文件 之后再打开的时候mcp文件打开以后就会乱码  只能打开old.mcp的文件了 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved