这个代码有什么问题?

2019-07-16 10:26发布

我的板子是CH452的SDA,和SCL分别连接STM34F103的B6,PB7.双线,而且SDA做输入和输出。木有INT#.。下载的别人的例程但是环境貌似有点差距打
#include <stdio.h>
#include <string.h>
#include <absacc.h>

#include "STM32f10x_lib.h"

//#define                ENABLE_2_CH452                1        // 在2线接口下支持两个CH452芯片并联

/* 延时1uS子程序,主要用于2线接口,与单片机速度有关 */
//#define                DELAY_1US                {}                                // MCS51<=10MHz
//#define                DELAY_1US                {_nop_();}                // MCS51<=20MHz
#define                DELAY_1US                { mDelayuS(1); }        // MCS51<=30MHz

/* 2线接口的连接,与实际电路有关 */
//sbit        CH452_SCL=P1^7;
//sbit        CH452_SDA=P1^6;   // 如果使用真正的2线接口,那么SDA接中断引脚P3^3/INT1,用SDA直接做中断输出
//sbit        CH452_ADDR=P1^5;  // 实际电路应该硬件接GND或者VCC
//sbit        CH452_INT=P3^3;   // 标准的2线接口使用该引脚输出中断

/* 4线接口的连接,与实际电路有关 */
//sbit   CH452_DCLK=P1^7;                     // 串行数据时钟上升延激活
//sbit   CH452_DIN=P1^6;                                // 串行数据输出,接CH452的数据输入
//sbit   CH452_LOAD=P1^5;                     // 串行命令加载,上升延激活
//sbit   CH452_DOUT=P3^3;                     // INT1,键盘中断和键值数据输入,接CH452的数据输出

/* 2线接口的位操作,与单片机有关 */
#define                CH452_SCL_SET                {GPIOB->BSRR = GPIO_Pin_6 ;}
#define                CH452_SCL_CLR                {GPIOB->BRR  = GPIO_Pin_6;}
//#define                CH452_SCL_D_OUT                {}                                // 设置SCL为输出方向,对于双向I/O需切换为输出
void CH452_SCL_D_OUT( void ){                                          //PB5
                GPIO_InitTypeDef GPIO_InitStructure;
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //Pb1 SDA
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                  /*推拉输出*/
            GPIO_Init(GPIOB, &GPIO_InitStructure);
}

#define                CH452_SDA_SET                {GPIOB->BSRR = GPIO_Pin_7 ;}
#define                CH452_SDA_CLR                {GPIOB->BRR  = GPIO_Pin_7 ;}
#define          CH452_SDA_IN                (GPIOB->IDR &0x20)                                          //PB5

void CH452_SDA_D_OUT( void ){//配置GPIO                                          //PB5
                GPIO_InitTypeDef GPIO_InitStructure;
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //Pb5 SDA
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                  /*推拉输出*/
            GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void CH452_SDA_D_IN( void )                {                                          //PB5
                GPIO_InitTypeDef GPIO_InitStructure;
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //Pb5 SDA
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                                  /*推拉输出*/
                GPIO_Init(GPIOB, &GPIO_InitStructure);
}

//#define                CH452_SDA_D_OUT                {}                                // 设置SDA为输出方向,对于双向I/O需切换为输出
//#define                CH452_SDA_D_IN                {CH452_SDA=1;}        // 设置SDA为输入方向,对于双向I/O需切换为输入

/* 4线接口的位操作,与单片机有关 */
#define                CH452_DCLK_SET                {CH452_DCLK=1;}
#define                CH452_DCLK_CLR                {CH452_DCLK=0;}
#define                CH452_DCLK_D_OUT        {}                                // 设置DCLK为输出方向,对于双向I/O需切换为输出
#define                CH452_DIN_SET                {CH452_DIN=1;}
#define                CH452_DIN_CLR                {CH452_DIN=0;}
#define                CH452_DIN_D_OUT                {}                                // 设置DIN为输出方向,对于双向I/O需切换为输出
#define                CH452_LOAD_SET                {CH452_LOAD=1;}
#define                CH452_LOAD_CLR                {CH452_LOAD=0;}
#define                CH452_LOAD_D_OUT        {}                                // 设置LOAD为输出方向,对于双向I/O需切换为输出
#define                CH452_DOUT_D_IN                {CH452_DOUT=1;}        // 设置DOUT为输入方向,对于双向I/O需切换为输入
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
lstcspring
1楼-- · 2019-07-16 16:14
你实际测试到底有什么问题,大家没时间来分析你的程序到底有什么问题,再说程序是测试出来的,再好的程序员写出的程序也得根据调试找问题
1328401998
2楼-- · 2019-07-16 21:27
程序没问题,就是调试的时候本来是当按键的时候点亮一个灯,但是它灯不亮

一周热门 更多>