资源简介
使用stc15w,内涵stc库函数,串口中断接收数据,使用消息队列,通过trigger脚来通知主机读取,亲测试通过。
代码片段和文件信息
#include “user.h“
#define IIC_NUM 1
#define write 0xfe
#define read 0x01
#if (IIC_NUM>0)
#define IIC_SDAOut() //GPIO_InitStructure_Mode_OUT_PP(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin)
#define IIC_SDAIn() //GPIO_InitStructure_Mode_IPU(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin)
#define IIC_SDA_1() GPIO_SetBits(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin);
#define IIC_SDA_0() GPIO_ResetBits(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin);
#define IIC_SCL_1() GPIO_SetBits(IIC_cfg[IIC_busId].SCLPortIIC_cfg[IIC_busId].SCLPin);
#define IIC_SCL_0() GPIO_ResetBits(IIC_cfg[IIC_busId].SCLPortIIC_cfg[IIC_busId].SCLPin);
#define IIC_SDA_STATE() GPIO_ReadInputDataBit(IIC_cfg[IIC_busId].SDAPortIIC_cfg[IIC_busId].SDAPin)
#define IIC_Delay() IIC_delay(IIC_cfg[IIC_busId].IICDelay_us)
#define SetBusId(id) IIC_busId=id
typedef struct _IIC_CFG_{
uint8_t IICDelay_us;
GPIO_TypeDef* SDAPort;
uint16_t SDAPin;
GPIO_TypeDef* SCLPort;
uint16_t SCLPin;
}IIC_CFG;
static const IIC_CFG IIC_cfg[IIC_NUM]={
//根据实际情况调整频率,此测试程序100us最佳
{100SDA2_PORTSDA2_PINSCL2_PORTSCL2_PIN}
};
static uint8_t IIC_busId=0;
#else
#define IIC_SDAOut()
#define IIC_SDAIn()
#define IIC_SDA_1()
#define IIC_SDA_0()
#define IIC_SCL_1()
#define IIC_SCL_0()
#define IIC_SDA_STATE() 0
#define IIC_Delay()
#define SetBusId(id)
#endif
void IIC_delay(uint8_t x)
{
delay_us(x);
}
void IIC_Start(void)
{
/* 当SCL高电平时,SDA出现一个下跳沿表示IIC总线启动信号 */
IIC_SDA_1();
IIC_SCL_1();
IIC_Delay();
IIC_SDA_0();
IIC_Delay();
IIC_SCL_0();
IIC_Delay();
}
void IIC_Stop(void)
{
/* 当SCL高电平时,SDA出现一个上跳沿表示IIC总线停止信号 */
IIC_SCL_0();
IIC_Delay();
IIC_SDA_0();
IIC_Delay();
IIC_SCL_1();
IIC_Delay();
IIC_SDA_1();
}
uint8_t IIC_WaitAck(void)
{
uint8_t wait=0xff;
IIC_SDA_1(); /* CPU释放SDA总线 */
IIC_SDAIn();
IIC_Delay();
IIC_SCL_1(); /* CPU驱动SCL = 1 此时器件会返回ACK应答 */
IIC_Delay();
while(wait--)
{
if(!IIC_SDA_STATE())
{
IIC_SCL_0();
IIC_Delay();
IIC_SDAOut();
return true;
}
IIC_Delay();
}
IIC_SDAOut();
return false;
}
void IIC_Ack(void)
{
IIC_SDA_0(); /* CPU驱动SDA = 0 */
IIC_Delay();
// Delay_us(1);
IIC_SCL_1(); /* CPU产生1个时钟 */
IIC_Delay();
//Delay_us(1);
IIC_SCL_0();
IIC_Delay();
//Delay_us(1);
IIC_SDA_1(); /* CPU释放SDA总线 */
}
void IIC_NAck(void)
{
IIC_SDA_1(); /* CPU驱动SDA = 1 */
IIC_Delay();
// Delay_us(1);
IIC_SCL_1(); /* CPU产生1个时钟 */
IIC_Delay();
// Delay_us(1);
IIC_SCL_0();
IIC_Delay();
// Delay_us(1);
}
uint8_t IIC_SendByte(uint8_t _ucByte)
{
uint8_t i;
/* 先发送字节的高位bit7 */
for (i = 0; i < 8; i++)
{
if (_ucByte & 0x80)
{
IIC_SDA_1(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-04 09:21 IIC_MASTER\
文件 6567 2018-01-04 09:25 IIC_MASTER\iic.c
文件 521 2017-12-27 17:07 IIC_MASTER\iic.h
文件 1777 2018-01-04 09:27 IIC_MASTER\iic_stc_demo.c
文件 43 2018-01-04 09:26 IIC_MASTER\readme.txt
目录 0 2018-01-04 09:16 IIC_SLAVE\
目录 0 2018-01-04 09:16 IIC_SLAVE\Listings\
文件 42293 2018-01-03 18:47 IIC_SLAVE\Listings\PA3.m51
文件 14458 2017-12-11 16:11 IIC_SLAVE\Listings\USART.lst
文件 548 2018-01-02 12:20 IIC_SLAVE\Listings\apd.lst
文件 1356 2018-01-03 18:37 IIC_SLAVE\Listings\delay.lst
文件 569 2018-01-02 12:20 IIC_SLAVE\Listings\eeprom.lst
文件 3679 2018-01-03 18:37 IIC_SLAVE\Listings\fun.lst
文件 555 2018-01-02 12:20 IIC_SLAVE\Listings\func.lst
文件 10787 2018-01-03 18:37 IIC_SLAVE\Listings\gpio.lst
文件 9275 2018-01-03 18:37 IIC_SLAVE\Listings\iic_slave.lst
文件 548 2018-01-02 12:20 IIC_SLAVE\Listings\key.lst
文件 1636 2018-01-03 18:37 IIC_SLAVE\Listings\main.lst
文件 4047 2018-01-03 18:37 IIC_SLAVE\Listings\message.lst
文件 562 2018-01-02 12:20 IIC_SLAVE\Listings\power.lst
文件 576 2018-01-02 12:20 IIC_SLAVE\Listings\protect.lst
文件 2336 2018-01-03 18:37 IIC_SLAVE\Listings\timer.lst
文件 576 2018-01-02 12:20 IIC_SLAVE\Listings\trigger.lst
文件 4798 2018-01-03 18:37 IIC_SLAVE\Listings\uart.lst
目录 0 2018-01-04 09:16 IIC_SLAVE\ob
文件 253063 2018-01-03 18:47 IIC_SLAVE\ob
文件 934 2017-12-27 13:56 IIC_SLAVE\ob
文件 9538 2018-01-03 18:47 IIC_SLAVE\ob
文件 257 2018-01-03 18:47 IIC_SLAVE\ob
文件 127883 2018-01-03 18:47 IIC_SLAVE\ob
文件 105 2018-01-02 12:20 IIC_SLAVE\ob
............此处省略99个文件信息
相关资源
- 基于stc89c52单片机的智能计算器代码
- STC12c5a60s2封装,LQFP-44_M原理图和pcb封
- 基于STC89C51占空比可调的pwm方波
- 解析ip数据包附mstcpip.h
- 基于STC单片机和可控硅的白炽灯调光
- 基于STC89C52单片机的测速计设计
- STC15F2K48S2单片机DS1302获取时间通过串
- 基于STC 51单片机的智能循迹小车
- stc12c5a60s2单片机两路pwm
- STC15W4K.h
- STC89C52+LCD1602+DS1302电子时钟
- STC89C52单片机与HC-06模块下位机测试程
- wxCheckedListCtrl带checkbox的ListCtrl
- 用STC12C5A60S2写的超声波C程序
- 基于VC的ModbusTCP协议模型通信测试软件
- 基于STC12C5A60S2的DS18B20温度显示工程
- 恒温水箱温度控制系统设计.zip
- STC隐写原理.pptx
- stc12c5a60s2的头文件
- STC12C5A60S2简单的AD转换程序
- STC12交流信号采样电路图
- 基于STC12C5A60S2自带AD转换和TL5615芯片完
- 吴恩达老师深度学习第二课第二周2
- 宏晶STC单片机常见封装及PCB库
- wcftestClient.exe
- pwm的使用。。stc12
- STC单片机触摸C程序
- 毕业设计智能灯
- CListCtrl的使用
- 不闪烁的list类ListCtrlEx
评论
共有 条评论