求帮看看程序为啥不能控制io口置高

2019-07-20 02:38发布

我仿真在子函数里面指令不能控制高低电平,但是如果把高低电平控制放到主程序就可以,还是这几个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)
{
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
hao7614
2019-07-20 04:35
#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)
{
        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;
        /* &#197;&#228;&#214;&#195;&#188;&#184;&#184;&#246;í&#198;íìê&#228;3&#246;IO */
//        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;                /* éè&#206;aê&#228;3&#246;&#191;ú */
//        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                /* éè&#206;aí&#198;íì&#196;£ê&#189; */
//        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;        /* é&#207;&#207;&#194;à-μ&#231;×è2&#187;ê1&#196;ü */
//        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;        /* IO&#191;ú×&#238;′ó&#203;ù&#182;è */
  GPIO_Set(GPIOB,1<<12,1,0,3,0);        //PB12&#184;′ó&#195;1|&#196;üê&#228;3&#246;       
        GPIO_Set(GPIOC,1<<1,1,0,3,0);        //PB2&#184;′ó&#195;1|&#196;üê&#228;3&#246;       
        GPIO_Set(GPIOC,1<<2,1,0,3,0);        //PB2&#184;′ó&#195;1|&#196;üê&#228;3&#246;       
        GPIO_Set(GPIOC,1<<3,0,0,2,0);        //PB2&#184;′ó&#195;1|&#196;üê&#228;3&#246;       
        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&#184;′ó&#195;1|&#196;üê&#228;3&#246;       
//        GPIO_Set(GPIOF,1<<10,1,0,3,0);        //PB2&#184;′ó&#195;1|&#196;üê&#228;3&#246;       
//        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);

        /* &#197;&#228;&#214;&#195;GPIO&#206;a&#184;&#161;&#182;ˉê&#228;è&#235;&#196;£ê&#189;(êμ&#188;êé&#207;CPU&#184;′&#206;&#187;oó&#190;íê&#199;ê&#228;è&#235;×′ì&#172;) */
//        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;                /* éè&#206;aê&#228;è&#235;&#191;ú */
//        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                /* éè&#206;aí&#198;íì&#196;£ê&#189; */
//        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;        /* &#206;TDèé&#207;&#207;&#194;à-μ&#231;×è */
//        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        /* IO&#191;ú×&#238;′ó&#203;ù&#182;è */

//        GPIO_InitStructure.GPIO_Pin = PIN_BUSY;
//        GPIO_Init(PORT_BUSY, &GPIO_InitStructure);
}


//AD7606&#184;′&#206;&#187;
void AD7606_Reset(void)
{
        /* AD7606ê&#199;&#184;&#223;μ&#231;&#198;&#189;&#184;′&#206;&#187;£&#172;òa&#199;ó×&#238;D&#161;&#194;&#246;&#191;í50ns */
        GPIO_Pin_Set(GPIOC,2,0);
       
        GPIO_Pin_Set(GPIOC,2,1);
        delay_us(1);
       
        GPIO_Pin_Set(GPIOC,2,0);
}


//AD7606á&#191;3ìéè&#214;&#195;
void AD7606_SetInputRange(uint8_t _ucRange)
{
        if (_ucRange == 0)
        {
                GPIO_Pin_Set(GPIOC,1,0);        /* éè&#214;&#195;&#206;a&#213;y&#184;o5V */
        }
        else
        {
                GPIO_Pin_Set(GPIOC,1,1);        /* éè&#214;&#195;&#206;a&#213;y&#184;o10V */
        }
}


//AD7606 AD×a&#187;&#187;&#191;&#216;&#214;&#198;
void AD7606_StartConv(void)
{
        /* é&#207;éy&#209;&#216;&#191;aê&#188;×a&#187;&#187;£&#172;μíμ&#231;&#198;&#189;3&#214;D&#248;ê±&#188;&#228;&#214;áéù25ns  */
        GPIO_Pin_Set(GPIOF,9,0);
                delay_us(1);/* á&#172;D&#248;&#214;′DD2′&#206;£&#172;μíμ&#231;&#198;&#189;&#212;&#188;50ns */
       
        GPIO_Pin_Set(GPIOF,9,1);
       
        GPIO_Pin_Set(GPIOF,10,0);
                delay_us(1);
        GPIO_Pin_Set(GPIOF,10,1);
}


//AD7606 AD2é&#188;ˉ
void AD7606_Scan(void)                 /* ′&#203;oˉêy′ú&#194;&#235;°′&#213;&#213;ê±Dò±àD′ */
{
        uint8_t i;                       

        /* BUSY = 0 ê±.ad7606′|óú&#191;&#213;&#207;D×′ì&#172;ad×a&#187;&#187;&#189;áê&#248; */       
        if (GPIO_Pin_Get(GPIOC,3)==0)          
  {
                GPIO_Pin_Set(GPIOB,12,0); /* SPI&#198;&#172;&#209;&#161; = 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); /* &#182;áêy&#190;Y */       
                }
       
                GPIO_Pin_Set(GPIOB,12,1); /* SPI&#198;&#172;&#209;&#161; = 1 */

                g_tAD7606.Readover = 1;
               
                AD7606_StartConv();        /* &#184;&#248;&#191;aê&#188;D&#197;o&#197; */       
        }
}         

一周热门 更多>