124 lines
3.7 KiB
C
124 lines
3.7 KiB
C
/**
|
|
******************************************************************************
|
|
* @file GPIO_Toggle\main.c
|
|
* @author MCD Application Team
|
|
* @version V2.0.4
|
|
* @date 26-April-2018
|
|
* @brief This file contains the main function for GPIO Toggle example.
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2>
|
|
*
|
|
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
|
|
* You may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.st.com/software_license_agreement_liberty_v2
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "stm8s.h"
|
|
#include "stm8s_it.h" /* SDCC patch: required by SDCC for interrupts */
|
|
|
|
/**
|
|
* @addtogroup GPIO_Toggle
|
|
* @{
|
|
*/
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
/* Private define ------------------------------------------------------------*/
|
|
/* Evalboard I/Os configuration */
|
|
|
|
/* automatically use built-in LED for known nucleo boards */
|
|
#if defined(STM8S_NUCLEO_208RB) || defined(STM8S_NUCLEO_207K8)
|
|
#define LED_GPIO_PORT (GPIOC)
|
|
#define LED_GPIO_PINS (GPIO_PIN_5)
|
|
#elif defined(STM8S103)
|
|
/* for STM8S103F3 breakout board. building with GPIOG would result in failure (chip
|
|
* does not have that GPIO peripheral) */
|
|
#define LED_GPIO_PORT (GPIOB)
|
|
#define LED_GPIO_PINS (GPIO_PIN_5)
|
|
#else
|
|
#define LED_GPIO_PORT (GPIOG)
|
|
#define LED_GPIO_PINS (GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_0)
|
|
#endif
|
|
|
|
/* Private macro -------------------------------------------------------------*/
|
|
/* Private variables ---------------------------------------------------------*/
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
void Delay (uint16_t nCount);
|
|
|
|
/* Private functions ---------------------------------------------------------*/
|
|
/* Public functions ----------------------------------------------------------*/
|
|
|
|
/**
|
|
* @brief Main program.
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void main(void)
|
|
{
|
|
|
|
/* Initialize I/Os in Output Mode */
|
|
GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
|
|
|
|
while (1)
|
|
{
|
|
/* Toggles LEDs */
|
|
GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
|
|
Delay(0xFFFF);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief Delay
|
|
* @param nCount
|
|
* @retval None
|
|
*/
|
|
void Delay(uint16_t nCount)
|
|
{
|
|
/* Decrement nCount value */
|
|
while (nCount != 0)
|
|
{
|
|
nCount--;
|
|
}
|
|
}
|
|
|
|
#ifdef USE_FULL_ASSERT
|
|
|
|
/**
|
|
* @brief Reports the name of the source file and the source line number
|
|
* where the assert_param error has occurred.
|
|
* @param file: pointer to the source file name
|
|
* @param line: assert_param error line source number
|
|
* @retval None
|
|
*/
|
|
void assert_failed(uint8_t* file, uint32_t line)
|
|
{
|
|
/* User can add his own implementation to report the file name and line number,
|
|
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
|
|
|
|
/* Infinite loop */
|
|
while (1)
|
|
{
|
|
}
|
|
}
|
|
#endif
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|