예제 #1
1
파일: main.c 프로젝트: KNVRK/STM8SProjects
/**
  * @brief Example firmware main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{

  /* Time base configuration */      
  TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);

  /* Prescaler configuration */
  TIM2_PrescalerConfig(TIM2_PRESCALER_2048, TIM2_PSCRELOADMODE_IMMEDIATE);

  /* Output Compare Active Mode configuration: Channel1 */
  /*
	  TIM2_OCMode = TIM2_OCMODE_ACTIVE
       TIM2_OutputState = TIM2_OUTPUTSTATE_ENABLE
       TIM2_Pulse = CCR1_Val
	 TIM2_OCPolarity = TIM2_OCPOLARITY_HIGH
	*/
	TIM2_OC1Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH);
	
  TIM2_OC1PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel2 */
  
  /*TIM2_Pulse = CCR2_Val  */
	
  TIM2_OC2Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC2PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel3 */
  /*
	TIM2_Pulse = CCR3_Val
	*/
  TIM2_OC3Init(TIM2_OCMODE_ACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR3_Val, TIM2_OCPOLARITY_HIGH);
  TIM2_OC3PreloadConfig(DISABLE);
  TIM2_ARRPreloadConfig(ENABLE);

  /* Set PG.6 pin */
  GPIO_Init(GPIOG, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_WriteHigh(GPIOG, GPIO_PIN_6);
  
  /* TIM2 enable counter */
  TIM2_Cmd(ENABLE);

  while (1);  
}
예제 #2
0
//*********************************//
void  sysio_ini(void)
{
    GPIO_DeInit(GPIOD);
    GPIO_Init(GPIOD,GPIO_PIN_2 ,GPIO_MODE_IN_PU_NO_IT); //data165
    GPIO_Init(GPIOD,GPIO_PIN_3 ,GPIO_MODE_OUT_PP_HIGH_FAST); //clk165
    GPIO_Init(GPIOD,GPIO_PIN_4 ,GPIO_MODE_OUT_PP_HIGH_FAST); //sh165
    GPIO_WriteHigh(GPIOD,H165_SH);
    GPIO_WriteHigh(GPIOD,H165_CLK);

    GPIO_DeInit(GPIOC);
    GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_HIGH_FAST);//led
    GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_HIGH_FAST);//c138
    GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_HIGH_FAST);//b138
    GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_HIGH_FAST);//a138
    GPIO_WriteLow(GPIOC,GPIO_PIN_4);

    GPIO_DeInit(GPIOB);
    GPIO_Init(GPIOB,GPIO_PIN_4 ,GPIO_MODE_OUT_OD_HIZ_SLOW); //clk1637
    GPIO_Init(GPIOB,GPIO_PIN_5 ,GPIO_MODE_OUT_OD_HIZ_SLOW); //sh1637
    GPIO_WriteHigh(GPIOB,T1637_CLK);
    GPIO_WriteHigh(GPIOB,T1637_DATA);



}
예제 #3
0
//SpeedSet:
//SPI_BAUDRATEPRESCALER_2    
//SPI_BAUDRATEPRESCALER_4   
//SPI_BAUDRATEPRESCALER_8    
//SPI_BAUDRATEPRESCALER_16 
static void spi_init(SPI_BaudRatePrescaler_TypeDef SPI_BaudRatePrescaler)
{
  GPIO_Init(LCD_CS_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);
  GPIO_Init(LCD_CD_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);
  GPIO_Init(LCD_RST_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);  
  GPIO_Init(LCD_LIGHT_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);
  
  GPIO_Init(SPI_SCK_PIN,GPIO_MODE_OUT_PP_LOW_FAST);  
  GPIO_Init(SPI_MOSI_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);  
  GPIO_Init(SPI_MISO_PIN,GPIO_MODE_IN_PU_NO_IT);
  
  //打开flash电源 开发板独有
  GPIO_Init(GPIOE,GPIO_PIN_0,GPIO_MODE_OUT_PP_HIGH_FAST);
  GPIO_WriteHigh(GPIOE,GPIO_PIN_0);
  
  //打开背光
  GPIO_WriteLow(LCD_LIGHT_PIN);
  
  GPIO_WriteLow(LCD_RST_PIN);
  u8g_10MicroDelay();
  GPIO_WriteHigh(LCD_RST_PIN);
  //关闭FLASH CS
  GPIO_WriteLow(GPIOG,GPIO_PIN_0);
  
  //初始化SPI
  SPI_DeInit(); 
  SPI_Init(SPI_FIRSTBIT_MSB, SPI_BaudRatePrescaler, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_LOW, SPI_CLOCKPHASE_1EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 0x00);
  SPI_Cmd(ENABLE);
}
예제 #4
0
uint8_t SPISendByte(uint8_t Data)
{

#ifdef USE_SPI_MODULE
  /*!< Wait until the transmit buffer is empty */
  while (SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET)
  {}

  /*!< Send the byte */
  SPI_SendData(Data);

  /*!< Wait to receive a byte*/
  while (SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET)
  {}

  /*!< Return the byte read from the SPI bus */
  return SPI_ReceiveData();
#else
  uint8_t i;
  for(i=0;i<8;i++)
  {
	GPIO_WriteLow(ENC_SCK_PORT,ENC_SCK_PIN);
        if(Data & 0x80)
          GPIO_WriteHigh(ENC_MOSI_PORT,ENC_MOSI_PIN);
        else
          GPIO_WriteLow(ENC_MOSI_PORT,ENC_MOSI_PIN);
	GPIO_WriteHigh(ENC_SCK_PORT,ENC_SCK_PIN);
	Data <<=1;
  }
  GPIO_WriteLow(ENC_SCK_PORT,ENC_SCK_PIN);
  
  return 0;
#endif
  
}
예제 #5
0
파일: lcd.c 프로젝트: maxk9/etro_new
//-------------------------------------------------------------------------------------------------
// Write data to current position
//-------------------------------------------------------------------------------------------------
void GLCD_WriteData(unsigned char dataToWrite)
{
    while(GLCD_ReadStatus(screen_x / 64)&DISPLAY_STATUS_BUSY);
       
//    GPIO_StructInit(&GPIO_InitStructure);
//    GPIO_InitStructure.GPIO_Pin = (0xFF );
//    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//    GPIO_Init(KS0108_PORT, &GPIO_InitStructure);
    
    GPIO_Init(KS0108_PORT,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_FAST);

    GPIO_WriteLow(GPIOC, KS0108_RW);
    GLCD_Delay();
    GPIO_WriteHigh(GPIOC, KS0108_RS);
    GLCD_Delay();

	GPIO_Write(KS0108_PORT, (GPIO_Pin_TypeDef)(dataToWrite ));
    GLCD_Delay();
	
    GLCD_EnableController(screen_x / 64);
    GLCD_Delay();
    GPIO_WriteHigh(GPIOC, KS0108_EN);
    GLCD_Delay();
    GPIO_WriteLow(GPIOC, KS0108_EN);
    GLCD_Delay();
    GLCD_DisableController(screen_x / 64);
    screen_x++;
}
예제 #6
0
파일: main.c 프로젝트: MatrixMike/stm8s
/**
  ******************************************************************************
  * @brief Adjustable led blinking speed using touch sensing keys
  * KEY1: LED1 is blinking
  * KEY1: LED1 is blinking faster
  * KEY1: LED1 don't blink anymore
  * @par Parameters:
  * None
  * @retval void None
  * @par Required preconditions:
  * None
  ******************************************************************************
  */
void ExtraCode_StateMachine(void)
{
  if ((TSL_GlobalSetting.b.CHANGED) && (TSLState == TSL_IDLE_STATE))
  {
    TSL_GlobalSetting.b.CHANGED = 0;

    if (sSCKeyInfo[0].Setting.b.DETECTED) /* KEY 1 touched */
    {
      BlinkSpeed++;
      BlinkSpeed = BlinkSpeed % 4;  // mike - was 3 
    }
  }
/*
  * Mike added - just worked out the action sequence for the stm8s 'new-code-install' 
  they call it download - my ASD get confused with this and freezes - 
  in the project tab - look for the debug and download words
  - debug tab - select a statement in C code in prog and can 'run to ursor' 
  - can go (F5) 
  next to change the case statement to add extra case and toggle an extra LED to be added 
  
  */
  switch (BlinkSpeed)
  {
    case 0 :
      GPIO_WriteHigh(GPIOD, GPIO_PIN_0);
 //     GPIO_WriteHigh(GPIOD, GPIO_PIN_1);
      GPIO_WriteHigh(GPIOD, GPIO_PIN_2);        // mike added
      break;

    case 1 :
      GPIO_WriteLow(GPIOD, GPIO_PIN_2);
      if (TSL_Tick_Flags.b.User_Flag_100ms == 1)
      {
        Delay(&Toggle, 2*MilliSec);
      }
      break;

    case 2 :
      if (TSL_Tick_Flags.b.User_Flag_100ms == 1)
      {
        Delay(&Toggle, 1*MilliSec);
      }
      break;
      
    case 3 :
      if (TSL_Tick_Flags.b.User_Flag_100ms == 1)
      {
        Delay(&Toggle, 1*MilliSec);
  //      GPIO_WriteHigh(GPIOD, GPIO_PIN_1);
          GPIO_WriteReverse(GPIOD, GPIO_PIN_2); // each time we go here we toggle
      }
      break;

    default :
      if (TSL_Tick_Flags.b.User_Flag_100ms == 1)
      {
        Delay(&Toggle, 1*Sec);
      }
  }
}
예제 #7
0
파일: lcd.c 프로젝트: maxk9/etro_new
//-------------------------------------------------------------------------------------------------
// Disable Controller (0-2)
//-------------------------------------------------------------------------------------------------
void GLCD_DisableController(unsigned char controller)
{
switch(controller){
	case 0 : GPIO_WriteHigh(GPIOC, KS0108_CS1); break;
	case 1 : GPIO_WriteHigh(GPIOC, KS0108_CS2); break;
	//case 2 : PORT_SetBits(KS0108_PORT, KS0108_CS3); break;
	default: break;
	}
}
예제 #8
0
파일: lcd.c 프로젝트: maxk9/etro_new
void GLCD_Reset(void)
{
    GPIO_WriteHigh(GPIOC, KS0108_RES);
    GLCD_Delay();
    GPIO_WriteLow(GPIOC, KS0108_RES);
    GLCD_Delay();
    GPIO_WriteHigh(GPIOC, KS0108_RES);
    
    while(GLCD_ReadStatus(0)&DISPLAY_STATUS_BUSY);
}
예제 #9
0
파일: lcd.c 프로젝트: Amirelecom/brush-v1
void LCD_NYB(unsigned char nyb, char type){
	unsigned char temp;
	temp = (nyb<<4) & 0xF0;
	GPIO_Write(LCD_PORT,temp);
   
	if(type == 0){
		GPIO_WriteLow(LCD_PORT,LCD_RS); //COMMAND MODE
	} else {
	GPIO_WriteHigh(LCD_PORT,LCD_RS); //CHARACTER/DATA MODE
	}
   
	GPIO_WriteHigh(LCD_PORT,LCD_E); //ENABLE LCD DATA LINE
	DelayMS(1); //SMALL DELAY
	GPIO_WriteLow(LCD_PORT,LCD_E); //DISABLE LCD DATA LINE
}
예제 #10
0
파일: main.c 프로젝트: jeasinema/Relay_485
void 	run_led(u8 sta)
{
	if(sta==1)
		GPIO_WriteLow(GPIOA,GPIO_PIN_3);
	else
		GPIO_WriteHigh(GPIOA,GPIO_PIN_3);
}
예제 #11
0
파일: lcd_digtron.c 프로젝트: faithsws/Kit
static void cs(char h)
{
  if(h)
     GPIO_WriteHigh(LCDDIG_CS_PORT,LCDDIG_CS_PIN);
  else
     GPIO_WriteLow(LCDDIG_CS_PORT,LCDDIG_CS_PIN);
}
예제 #12
0
파일: lcd_digtron.c 프로젝트: faithsws/Kit
static void rd(char h)
{
  if(h)
     GPIO_WriteHigh(LCDDIG_PORT,LCDDIG_RD_PIN);
  else
     GPIO_WriteLow(LCDDIG_PORT,LCDDIG_RD_PIN);
}
예제 #13
0
파일: main.c 프로젝트: KNVRK/STM8SProjects
/**
  * @brief Example main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{
  /* Initialize I/Os in Output Mode for LEDs */
  GPIO_Init(LEDS_PORT, LED1_PIN | LED2_PIN, GPIO_MODE_OUT_PP_LOW_FAST);
	
  /* Initialize I/O in Input Mode with Interrupt for button and joystick */
	/* Button */
  GPIO_Init(BUTTON_PORT, BUTTON_PIN, GPIO_MODE_IN_FL_IT);
  /* Joystick */
  GPIO_Init(JOYSTICK_PORT, JOYSTICK_DOWN_PIN, GPIO_MODE_IN_FL_IT);

  /* Initialize the Interrupt sensitivity for button and joystick */
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_LOW);
  EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_LOW);

  /*
    Change the software priority between button and joystick:
    - By hardware the PORTB (joystick) has a higher priority than PORTC (button)
    - We configure the PORTC (button) to have a higher sw priority than PORTB (joystick)
  */
  ITC_SetSoftwarePriority(ITC_IRQ_PORTB, ITC_PRIORITYLEVEL_1); /* joystick */
  ITC_SetSoftwarePriority(ITC_IRQ_PORTC, ITC_PRIORITYLEVEL_2); /* button = higher sw priority */

  enableInterrupts();

  /* LEDs are ON together */
  GPIO_WriteHigh(LEDS_PORT, (LED1_PIN | LED2_PIN));
 
  while (1);
}
예제 #14
0
파일: main.c 프로젝트: KNVRK/STM8SProjects
/**
  * @brief Example firmware main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{

  u8 Leds; /* Contains which LEDs to operate */

  /* Initialize I/Os in Output Mode */
  GPIO_Init(LEDS_PORT, (LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN), GPIO_MODE_OUT_PP_LOW_FAST);

  /* Toggles LEDs */

  while (1)
  {
    /* Check button status */
    if ((GPIO_ReadInputData(BUTTON_PORT) & BUTTON_PIN) == (u8)0x00)
    {
      /* Button is pressed */
      Leds = (LED2_PIN | LED3_PIN);
    }
    else
    {
      /* Button is released */
      Leds = (LED1_PIN | LED4_PIN);
    }
    /* LEDs ON */
    GPIO_WriteHigh(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
    /* LEDs OFF */
    GPIO_WriteLow(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
  }

}
예제 #15
0
파일: main.c 프로젝트: jk128/stm8s-projects
int main( void ){

    uint16_t i;
    // Reset GPIO port D to a default state
    GPIO_DeInit(GPIOD);

    /* Clock configuration -----------------------------------------*/
    //CLK_Config();

    /*AWU configuration --------------------------------------------*/
    AWU_Config();

    GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
    // The main loop
    while( 1 ){

        GPIO_WriteLow(GPIOD, GPIO_PIN_0);

        for(i=0;i<10000;i++) // A delay loop
        {
            nop();
        }
        GPIO_WriteHigh(GPIOD, GPIO_PIN_0);

        halt();/* Program halted */
    }

}
예제 #16
0
static void set_gpio_level(GPIO_TypeDef *PORT, GPIO_Pin_TypeDef Pin, uint8_t level)
{
  if(level != 0){
		GPIO_WriteHigh(PORT, Pin);
	}else{
		GPIO_WriteLow(PORT, Pin);
	}
}
예제 #17
0
파일: lcd_digtron.c 프로젝트: faithsws/Kit
static void data(char h)
{
  GPIO_Init(LCDDIG_PORT, (GPIO_Pin_TypeDef)(LCDDIG_DATA_PIN ), GPIO_MODE_OUT_PP_LOW_FAST);
  if(h)
     GPIO_WriteHigh(LCDDIG_PORT,LCDDIG_DATA_PIN);
  else
     GPIO_WriteLow(LCDDIG_PORT,LCDDIG_DATA_PIN);
}
void _Device_Set_ADP_SOC(unsigned char enable){
  if(enable){
    //DeviceOn
    GPIO_WriteHigh(ADP_SOC_PORT, ADP_SOC_PIN);
  }else{
    //DeviceOff
    GPIO_WriteLow(ADP_SOC_PORT, ADP_SOC_PIN);
  }
}
예제 #19
0
파일: main.c 프로젝트: jeasinema/Relay_485
//RS485 使能配置,flag=0使能接收 flag=1使能发送 port默认为1
void RS485_RSV(u8 port, u8 flag)
{
	if(port == 1)
	{
		if(flag ==0)
			GPIO_WriteLow(GPIOD,GPIO_PIN_4);	
		else
			GPIO_WriteHigh(GPIOD,GPIO_PIN_4);				
			
	}
}
예제 #20
0
// Enable or Disable the LCD backlight
void LCD_Backlight(FunctionalState NewState)
{
  if (NewState == DISABLE)
  {
    GPIO_WriteLow(LCD_BACKLIGHT_PORT, LCD_BACKLIGHT_PIN);
  }
  else
  {
    GPIO_WriteHigh(LCD_BACKLIGHT_PORT, LCD_BACKLIGHT_PIN);
  }
}
예제 #21
0
// Enable or Disable the LCD through CS pin
void LCD_ChipSelect(FunctionalState NewState)
{
  if (NewState == DISABLE)
  {
    GPIO_WriteLow(LCD_CS_PORT, LCD_CS_PIN); /* CS pin low: LCD disabled */
  }
  else
  {
    GPIO_WriteHigh(LCD_CS_PORT, LCD_CS_PIN); /* CS pin high: LCD enabled */
  }
}
예제 #22
0
파일: bsp_led.c 프로젝트: Roger-WY/tq
void  BSP_LED_Off (uint8_t led)
{
    switch (led) {
        case 0:
        GPIO_WriteHigh(LED1_GPIO_PORT, LED1_GPIO_PIN);
        GPIO_WriteHigh(LED2_GPIO_PORT, LED2_GPIO_PIN);
        break;

        case 1:
        GPIO_WriteHigh(LED1_GPIO_PORT, LED1_GPIO_PIN);
        break;

        case 2:
        GPIO_WriteHigh(LED2_GPIO_PORT, LED2_GPIO_PIN);
        break;

        default:
        break;
    }
}
예제 #23
0
파일: lcd.c 프로젝트: maxk9/etro_new
//-------------------------------------------------------------------------------------------------
// Read Status byte from specified controller (0-2)
//-------------------------------------------------------------------------------------------------
unsigned char GLCD_ReadStatus(unsigned char controller)
{
    unsigned char status;

//    GPIO_StructInit(&GPIO_InitStructure);
//    GPIO_InitStructure.GPIO_Pin = 0xFF ;
//    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
//    GPIO_Init(KS0108_PORT, &GPIO_InitStructure);
    GPIO_Init(KS0108_PORT,GPIO_PIN_ALL,GPIO_MODE_IN_PU_NO_IT);
    
    GPIO_WriteHigh(GPIOC, KS0108_RW);
    GPIO_WriteLow(GPIOC, KS0108_RS);
    GLCD_EnableController(controller);
    GLCD_Delay();
    GPIO_WriteHigh(GPIOC, KS0108_EN);
    GLCD_Delay();
    status = ((GPIO_ReadInputData(KS0108_PORT) ) & 0xFF);
    GPIO_WriteLow(GPIOC, KS0108_EN);
    GLCD_DisableController(controller);
    return status;
}
예제 #24
0
파일: led.c 프로젝트: glocklueng/I2C-LED
static void _led_write_com(char digit)
{
  // LED_COM_4: PD1
  // LED_COM_3: PD4
  // LED_COM_2: PD6
  // LED_COM_1: PA3
  switch (digit)
  {
  case 1:
    GPIO_WriteHigh(GPIOA, (GPIO_Pin_TypeDef)GPIO_PIN_3);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_6);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_4);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_1);
    break;
  case 2:
    GPIO_WriteLow(GPIOA, (GPIO_Pin_TypeDef)GPIO_PIN_3);
    GPIO_WriteHigh(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_6);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_4);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_1);
    break;
  case 3:
    GPIO_WriteLow(GPIOA, (GPIO_Pin_TypeDef)GPIO_PIN_3);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_6);
    GPIO_WriteHigh(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_4);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_1);
    break;
  case 4:
    GPIO_WriteLow(GPIOA, (GPIO_Pin_TypeDef)GPIO_PIN_3);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_6);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_4);
    GPIO_WriteHigh(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_1);
    break;
  case 0:
    GPIO_WriteLow(GPIOA, (GPIO_Pin_TypeDef)GPIO_PIN_3);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_6);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_4);
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef)GPIO_PIN_1);
    break;    
  }
}
예제 #25
0
//Method to send strings via UART
void UART_SendStr(const char *s)
{
	//Set Max485 in Transmitter mode
	GPIO_WriteHigh(GPIOA, GPIO_PIN_3);
	while(*s)
	{
	UART2_SendData8((uint8_t)(*s));
	while ((UART2->SR & UART2_SR_TXE ) != UART2_SR_TXE );
	s++;
	}
	//Set Max485 in Receiver mode
	GPIO_WriteLow(GPIOA, GPIO_PIN_3);
}
예제 #26
0
//****************读取HC165数据
void  Read165(u8 *rdata)
{
    u8 num=0;
    GPIO_WriteLow(GPIOD,H165_SH);
    asm("nop");
    asm("nop");
    GPIO_WriteHigh(GPIOD,H165_SH);
    asm("nop");
    for(num=0; num<4; num++)
    {
        for(u8 i=0; i<8; i++)
        {
            *(rdata+num)<<=1;
            if(GPIO_ReadInputPin(GPIOD,H165_DATA)) {
                *(rdata+num) += 1;
            }
            GPIO_WriteLow(GPIOD,H165_CLK);
            asm("nop");
            GPIO_WriteHigh(GPIOD,H165_CLK);       //上升沿
            asm("nop");
        }
    }
}
예제 #27
0
파일: main.c 프로젝트: Rijad12/EL-401
/**
  * @brief  Configures the different GPIO ports.
  * @param  None
  * @retval None
  */
void GPIO_Config(void)
{
    /* Set PA5 as Output open-drain high-impedance level - SmartCard_IO(UART11_Tx)*/
    GPIO_Init(GPIOA, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_FAST);
    /* Set PG5 as Output push-pull low level - SmartCard_RESET*/
    GPIO_Init(GPIOG, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);
    /* Set PA6 as Output push-pull low level - SmartCard_CLK*/
    GPIO_Init(GPIOA, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
    /* Set PG4 as Output push-pull low level - SmartCard_5V/3V*/
    GPIO_Init(GPIOG, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
    /* Set PG7 as Output push-pull high level (inactive state) - SmartCard_/CMDVCC*/
    GPIO_Init(GPIOG, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST);
    /* Set PE0 as Input pull-up, no external interrupt - SmartCard_OFF*/
    GPIO_Init(GPIOE, GPIO_PIN_0, GPIO_MODE_IN_PU_NO_IT);
    /* Set RSTIN HIGH */
    GPIO_WriteHigh(GPIOG, GPIO_PIN_5);

    /* Select Smart Card CMDVCC */
    GPIO_WriteHigh(GPIOG, GPIO_PIN_7);

    /* Select 5 V */
    GPIO_WriteHigh(GPIOG, GPIO_PIN_4);
}
예제 #28
0
void spiFlashInit()
{
  GPIO_Init(FLASH_CS_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);  
  GPIO_Init(SPI_SCK_PIN,GPIO_MODE_OUT_PP_LOW_FAST);  
  GPIO_Init(SPI_MOSI_PIN,GPIO_MODE_OUT_PP_HIGH_FAST);  
  GPIO_Init(SPI_MISO_PIN,GPIO_MODE_IN_PU_NO_IT);
  
  //打开flash电源 开发板独有
  GPIO_Init(GPIOE,GPIO_PIN_0,GPIO_MODE_OUT_PP_HIGH_FAST);
  GPIO_WriteHigh(GPIOE,GPIO_PIN_0);
  
  //初始化SPI
  SPI_DeInit(); 
  SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_4, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_LOW, SPI_CLOCKPHASE_1EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 0x00);
  SPI_Cmd(ENABLE);
}
예제 #29
0
파일: communication.c 프로젝트: wantf/C
void TxSendData(void)
{
//		if( (u8OutState&BuzWork) == BuzWork) return;
		u8commStatus = 0;
		fgSending = 1;
		u8CurSendByte = 0;
		u8CurSendBit = 0;
		u8CurSend500usCnt = 0;
		u8CommSendStep = LEAD_LOW;
		GPIO_WriteHigh(TxRxPort,TX);
		GPIO_Init(TxRxPort, RX, GPIO_MODE_IN_FL_NO_IT);
//		u8CurRevByte = 0;
//		u8CurRevBit = 0;
		u8CommRevStep = 0;
		resetTim4For500us();		
}
예제 #30
0
파일: main.c 프로젝트: KNVRK/STM8SProjects
/**
  * @brief Example firmware main entry point.
  * @par Parameters:
  * None
  * @retval 
  * None
  */
void main(void)
{

  /* Time base configuration */
  TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 65535);

  /* Prescaler configuration */
  TIM2_PrescalerConfig(TIM2_PRESCALER_2048, TIM2_PSCRELOADMODE_IMMEDIATE);

  /* Output Compare Active Mode configuration: Channel1 */
  /*
	  TIM2_OCMode = TIM2_OCMODE_INACTIVE
       TIM2_OCPolarity = TIM2_OCPOLARITY_HIGH
       TIM2_Pulse = CCR1_Val
	*/
  TIM2_OC1Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC1PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel2 */
  
  /*TIM2_Pulse = CCR2_Val;  */
  TIM2_OC2Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR2_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC2PreloadConfig(DISABLE);

  /* Output Compare Active Mode configuration: Channel3 */
  /*TIM2_Pulse = CCR3_Val  */
  TIM2_OC3Init(TIM2_OCMODE_INACTIVE, TIM2_OUTPUTSTATE_ENABLE,CCR3_Val, TIM2_OCPOLARITY_HIGH); 
  TIM2_OC3PreloadConfig(DISABLE);

  TIM2_ARRPreloadConfig(ENABLE);
  
  /* TIM IT enable */
  TIM2_ITConfig(TIM2_IT_CC1, ENABLE);
  TIM2_ITConfig(TIM2_IT_CC2, ENABLE);
  TIM2_ITConfig(TIM2_IT_CC3, ENABLE);

  /* Set pin PG.5 & PG.6 & PG.7 to high state */
  GPIO_Init(GPIOG, (GPIO_PIN_5|GPIO_PIN_6| GPIO_PIN_7), GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_WriteHigh(GPIOG, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
  
  /* TIM2 enable counter */
  TIM2_Cmd(ENABLE);
	
  enableInterrupts();

  while (1);
}