stm8s跳出中断程序c语言,STM8S I2C总线中断程序

发布者:本人在最新更新时间:2021-09-27 关键字: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接收中断程序

推荐阅读最新更新时间:2024-11-09 08:06

c51中断优先级c语言,51单片机的中断优先级及中断嵌套
说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了。 在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了。实际上很多人都是混淆了优先级的含义,所以才觉得糊里糊涂。 中断的优先级有两个:查询优先级和执行优先级。 什么是查询优级呢?我们从datasheet或书上看到的默认(IP寄存器不做设置,上电复位后为00H)的优先级: 外部中断0 定时/计数器0 外部中断1 定时/计数器1 串行中断 或 int0,timer0,int1,timer1,serial port 或 INT0、T
[单片机]
单片机c语言教程第一章 建立你的第一个KeilC51项目
随着单片机技术的不断发展,以单片机C语言为主流的高级语言也不断被更多的单片机爱好者和工程师所喜爱。使用C51肯定要使用到编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2 是众多单片机应用开发软件中优秀的软件之一,它支持众多不一样公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软 VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。本站提供的单片机c语言教程都是基于keilc51的   下面结合8051介绍单片机C语言的优越性:   ·无须懂得单片机的具体硬件,也能够编出符合硬件
[单片机]
单片机<font color='red'>c语言</font>教程第一章 建立你的第一个KeilC51项目
C语言常见问题
1、嵌入式与单片机的区别 从软件上,行业里经常把芯片中不带MMU(Memory Management Unit内存管理单元)从而不支持虚拟地址,只能裸奔或运行RTOS(实时操作系统,例如ucos、华为LiteOS、RT-Thread、FreeRTOS)的system,叫做单片机(例如STM32、NXP) 而把芯片自带MMU可以支持虚拟地址,能够跑Linux、Vxworks、WinCE、Android这样的“高级”的system,叫做嵌入式 2、Heap(堆)和Stack(栈)的区别 Heap(堆)上的空间是手动分配和释放的,Stack(栈)上的空间是自动分配和释放的 3、全局变量和局部变量的区别 1、作用域不同:全局变量作
[单片机]
C语言一百例第十九例
代码: /* C语言第19例 题目:一个数如果恰好等于它的因子之和,这个数就称为 完数 。例如6=1+2+3.编程找出1000以内的所有完数。 程序分析:请参照:C 练习实例14。 */ #include stdio.h #define N 1000 int main() { int i,j,k,n,sum; int a ; for(i=2;i =N;i++) { sum=a =1; k=0; for(j=2;j =(i/2);j++) { if(i%j==0) { sum+=j; a =j; }
[单片机]
<font color='red'>C语言</font>一百例第十九例
使用C语言实现IIC驱动(基于STM32和HAL库做进一步封装)
一.简述 使用面向对象的编程思想封装IIC驱动,将IIC的属性和操作封装成一个库,在需要创建一个IIC设备时只需要实例化一个IIC对象即可,本文是基于STM32和HAL库做进一步封装的。 底层驱动方法不重要,封装的思想很重要。在完成对IIC驱动的封装之后借助继承特性实现AT24C64存储器的驱动开发,仍使用面向对象的思想封装AT24C64驱动。 二.IIC驱动面向对象封装 iic.h头文件主要是类模板的定义,具体如下: //定义IIC类 typedefstructIIC_Type { //属性 GPIO_TypeDef*GPIOx_SCL;//GPIO_SCL所属的GPIO组(如:GPIOA) GPIO_TypeDe
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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