STM32F4 多路ad和da

1190阅读 0评论2014-02-24 枫海8深蓝
分类:C/C++

/******************************************************************
*******????·???????????????????×???????????????????????************
*******????????????·??÷????????????????????????????????????********
*******???????????????¨?±?÷??????**********************************
*×÷????????
*?±????2013-07-09
*******************************************************************/
#include "USER_DIDO.h"
 vu16 DO_State_RES = 0x0000;  //????·????¨???ó???á?¨??extern???¨???????????ú??????
 vu8 DI_State_RES = 0x00; 






static void DO_GPIO_Config(void)  //DO×??????ù?????????è?????????????????è????0
{
 GPIO_InitTypeDef  GPIO_InitStructure;


    BSP_PeriphEn(BSP_PERIPH_ID_GPIOH);                          /* Configure GPIOG for LED1 and LED2                    */


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6 | GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;


    GPIO_Init(GPIOH, &GPIO_InitStructure);


 BSP_PeriphEn(BSP_PERIPH_ID_GPIOE);                          /* Configure GPIOG for LED1 and LED2                    */


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;


    GPIO_Init(GPIOE, &GPIO_InitStructure);
}


static void DO_TIM2_Config(void)   //???±????
{
;
}
void DO_I(void)
{
DO_GPIO_Config();

}


static void DI_GPIO_Config(void)  //?????????é???¨??
{
GPIO_InitTypeDef  GPIO_InitStructure;



    BSP_PeriphEn(BSP_PERIPH_ID_GPIOD);                          /* Configure GPIOG for LED1 and LED2                    */


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15| GPIO_Pin_2| GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP; //??????????±??????¨
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;


    GPIO_Init(GPIOD, &GPIO_InitStructure);


 BSP_PeriphEn(BSP_PERIPH_ID_GPIOG);                          /* Configure GPIOG for LED1 and LED2                    */


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_2 | GPIO_Pin_9| GPIO_Pin_13| GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;


    GPIO_Init(GPIOG, &GPIO_InitStructure);

 BSP_PeriphEn(BSP_PERIPH_ID_GPIOC);                          /* Configure GPIOG for LED1 and LED2                    */


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;


    GPIO_Init(GPIOC, &GPIO_InitStructure);

BSP_PeriphEn(BSP_PERIPH_ID_GPIOH);                          /* Configure GPIOG for LED1 and LED2                    */


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_14;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;


    GPIO_Init(GPIOH, &GPIO_InitStructure);

BSP_PeriphEn(BSP_PERIPH_ID_GPIOI);                          /* Configure GPIOG for LED1 and LED2                    */


    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;


    GPIO_Init(GPIOI, &GPIO_InitStructure);

}


/*
static void DI_EXIT_Config(void)
{

  EXTI_InitTypeDef EXTI_InitStructure;  //?¨????????±???
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//????syscfg???±??
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI,EXTI_PinSource0);//?¨??EXIT???¨??????,????°ó?¨ EXTI??????
EXTI_InitStructure.EXTI_Line = EXTI_Line0;      //??????
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;   
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;      //
  EXTI_Init(&EXTI_InitStructure);

}
?????????±·?????
*/






void DI_Init(void)
{
DI_GPIO_Config();//??????gpio14×
  //NVIC_Configuration();
DI_TIM2_Config();//????????Tim2?±?? 1s???????ó?á???????????????????¨????±?



BSP_IntVectSet(BSP_INT_ID_TIM2, TIM2_IQR_TEST);  //??×????¨????????  BSP_IntHandlerUSART1
NVIC_Configuration();
  BSP_IntPrioSet(BSP_INT_ID_TIM2,2);    
  BSP_IntEn(BSP_INT_ID_TIM2);                             //????????




}






static void DI_TIM2_Config(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   //TIM_OCInitTypeDef TIM_OCInitStructure;
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
//TIM_DeInit(TIM2); //???????è??tim???±????
   TIM_TimeBaseStructure.TIM_Period=1000-1; /* ×?????×°???????÷????????(??????) 1S??????*/
/* ???? TIM_Period???????ó?ú?ú?????ü???ò?????? */
   TIM_TimeBaseStructure.TIM_Prescaler=0x0;    /* ?±???¤·?????   ???????±??????=APB1=42MHZ/(?±???¤·???+1) */
   TIM_TimeBaseStructure.TIM_ClockDivision= 0x0; /* ???ù·??? */
   TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* ?ò?????????? */
   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);


TIM_PrescalerConfig(TIM2,0xA40F,TIM_PSCReloadMode_Immediate);//?±??·?????????42000???????¨?±?÷?±????2s
   TIM_ARRPreloadConfig(TIM2, DISABLE);//?????°×??????÷
   TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);


   TIM_Cmd(TIM2, ENABLE);        //






  
 
}


/*******************************************************************************
* Function Name  : NVIC_Configuration
* Description    : Configuration the nested vectored interrupt controller.
* Input          : None
* Output         : None
* Return         : None
* Attention : None
*******************************************************************************/
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef  NVIC_InitStructure;  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);   //Tim2????????????????2??????8??8·?????????????
  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //?????¨?? 
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//????????????2????????0??????
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;//?à??????????1???????ó????????
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}










void TIM2_IQR_TEST(void)
{
BSP_LED_Toggle(3);
TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update); 
}



这部分是多路ad和da的数据采集初始化配置内容,希望对给位有用




































上一篇:ssd1289控制tft屏幕(基于stm2)
下一篇:stm32 dma adc