我仿真在子函数里面指令不能控制高低电平,但是如果把高低电平控制放到主程序就可以,还是这几个IO口,我有点蒙了 大家帮我看看是不是那个地方设置错了?我晕啊
#include "ad7606.h"
#include "delay.h"
int16_t s_adc_now[8];
uint8_t ch_num;
AD7606_T g_tAD7606;
//AD7606 3õê¼»ˉ
void AD7606_Init(uint8_t n)
{
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#include "delay.h"
int16_t s_adc_now[8];
uint8_t ch_num;
AD7606_T g_tAD7606;
//AD7606 3õê¼»ˉ
void AD7606_Init(uint8_t n)
{
AD7606_ConfigGPIO(); /* ÅäÖÃGPIO */
g_tAD7606.Range = 1;
AD7606_SetInputRange(g_tAD7606.Range); /* éèÖÃ2éÑùá¿3ì */
/* éèÖÃ1y2éÑùÄ£ê½ */
//ad7606_SetOS(0);
AD7606_Reset(); /* ó2¼t¸′λ¸′AD7606 */
// AD_CONVST_1();
GPIO_Pin_Set(GPIOF,9,1); /* CONVST½ÅéèÖÃÎa¸ßμçƽ */
// AD_CONVSTB_1();
GPIO_Pin_Set(GPIOF,10,1);
g_tAD7606.Readover = 0;
}
//AD7606 GPIOÅäÖÃ
static void AD7606_ConfigGPIO(void)
{
RCC->AHB4ENR|=1<<1;
RCC->AHB4ENR|=1<<2;
RCC->AHB4ENR|=1<<5;
/* ÅäÖü¸¸öíÆíìêä3öIO */
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; /* éèÎaêä3ö¿ú */
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /* éèÎaíÆíìÄ£ê½ */
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; /* éÏÏÂà-μç×è2»ê1Äü */
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; /* IO¿ú×î′óËù¶è */
GPIO_Set(GPIOB,1<<12,1,0,3,0); //PB12¸′óÃ1|Äüêä3ö
GPIO_Set(GPIOC,1<<1,1,0,3,0); //PB2¸′óÃ1|Äüêä3ö
GPIO_Set(GPIOC,1<<2,1,0,3,0); //PB2¸′óÃ1|Äüêä3ö
GPIO_Set(GPIOC,1<<3,0,0,2,0); //PB2¸′óÃ1|Äüêä3ö
GPIO_Set(GPIOF,PIN9|PIN10,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);
// GPIO_Set(GPIOF,1<<9,1,0,3,0); //PB2¸′óÃ1|Äüêä3ö
// GPIO_Set(GPIOF,1<<10,1,0,3,0); //PB2¸′óÃ1|Äüêä3ö
// GPIO_InitStructure.GPIO_Pin = PIN_RESET;
// GPIO_Init(PORT_RESET, &GPIO_InitStructure);
// GPIO_InitStructure.GPIO_Pin = PIN_CONVST;
// GPIO_Init(PORT_CONVST, &GPIO_InitStructure);
//
// GPIO_InitStructure.GPIO_Pin = PIN_CONVSTB;
// GPIO_Init(PORT_CONVSTB, &GPIO_InitStructure);
//
// GPIO_InitStructure.GPIO_Pin = PIN_RANGE;
// GPIO_Init(PORT_RANGE, &GPIO_InitStructure);
//
// GPIO_InitStructure.GPIO_Pin = PIN_CS;
// GPIO_Init(PORT_CS, &GPIO_InitStructure);
/* ÅäÖÃGPIOÎa¸¡¶ˉêäèëÄ£ê½(êμ¼êéÏCPU¸′λoó¾íêÇêäèë×′ì¬) */
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; /* éèÎaêäèë¿ú */
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /* éèÎaíÆíìÄ£ê½ */
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; /* ÎTDèéÏÏÂà-μç×è */
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* IO¿ú×î′óËù¶è */
// GPIO_InitStructure.GPIO_Pin = PIN_BUSY;
// GPIO_Init(PORT_BUSY, &GPIO_InitStructure);
}
//AD7606¸′λ
void AD7606_Reset(void)
{
/* AD7606êǸßμçƽ¸′룬òaÇó×îD¡Âö¿í50ns */
GPIO_Pin_Set(GPIOC,2,0);
GPIO_Pin_Set(GPIOC,2,1);
delay_us(1);
GPIO_Pin_Set(GPIOC,2,0);
}
//AD7606á¿3ìéèÖÃ
void AD7606_SetInputRange(uint8_t _ucRange)
{
if (_ucRange == 0)
{
GPIO_Pin_Set(GPIOC,1,0); /* éèÖÃÎaÕy¸o5V */
}
else
{
GPIO_Pin_Set(GPIOC,1,1); /* éèÖÃÎaÕy¸o10V */
}
}
//AD7606 AD×a»»¿ØÖÆ
void AD7606_StartConv(void)
{
/* éÏéyÑØ¿aê¼×a»»£¬μíμçƽ3ÖDøê±¼äÖáéù25ns */
GPIO_Pin_Set(GPIOF,9,0);
delay_us(1);/* á¬DøÖ′DD2′Σ¬μíμçƽԼ50ns */
GPIO_Pin_Set(GPIOF,9,1);
GPIO_Pin_Set(GPIOF,10,0);
delay_us(1);
GPIO_Pin_Set(GPIOF,10,1);
}
//AD7606 AD2é¼ˉ
void AD7606_Scan(void) /* ′Ëoˉêy′úÂë°′ÕÕê±Dò±àD′ */
{
uint8_t i;
/* BUSY = 0 ê±.ad7606′|óú¿ÕÏD×′ì¬ad×a»»½áêø */
if (GPIO_Pin_Get(GPIOC,3)==0)
{
GPIO_Pin_Set(GPIOB,12,0); /* SPIƬѡ = 0 */
for (i = 0; i < ch_num; i++)
{
s_adc_now[i] = SPI2_ReadWriteByte(0xFF);
s_adc_now[i] = s_adc_now[i] * 256 + SPI2_ReadWriteByte(0xFF); /* ¶áêy¾Y */
}
GPIO_Pin_Set(GPIOB,12,1); /* SPIƬѡ = 1 */
g_tAD7606.Readover = 1;
AD7606_StartConv(); /* ¸ø¿aê¼DÅoÅ */
}
}
一周热门 更多>