微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 这个代码有什么问题?

这个代码有什么问题?

时间:10-02 整理:3721RD 点击:
我的板子是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需切换为输入

你实际测试到底有什么问题,大家没时间来分析你的程序到底有什么问题,再说程序是测试出来的,再好的程序员写出的程序也得根据调试找问题

程序没问题,就是调试的时候本来是当按键的时候点亮一个灯,但是它灯不亮

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top