⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st79_main.c

📁 st公司新出的一款8位单片机st79的lib库
💻 C
字号:
/**
  ******************************************************************************
  * @file st79_main.c
  * @brief This file contains the main function.
  * @author STMicroelectronics - MCD & APG Car Body Application Labs
  * @version V0.01
  * @date 04-JUL-2007
  ******************************************************************************
  *
  * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2007 STMicroelectronics</center></h2>
  * @image html logo.bmp
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "st79_lib.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/

/* Private function prototypes -----------------------------------------------*/
void Delay (u16 nCount);
u8 putchar(u8 c);
u8 getchar(void);

/* Private functions ---------------------------------------------------------*/

void Delay(u16 nCount)
{
  /* Decrement nCount value */
  while(nCount != 0)
  {
    nCount--;
  }
}

u8 putchar(u8 c)
{
#ifdef PRINT_ON_USART
  while(!(USART->SR & USART_SR_TC)); /* Temporary: needed by Library function */
#else
  while(!(LINUART->SR & LINUART_SR_TC)); /* Temporary: needed by Library function */
#endif  
  if (c == '\n')
  {
    /* put '\r' to hardware here */
#ifdef PRINT_ON_USART    
    USART_SendData8(USART, '\r');
#else
    LINUART_SendData8(LINUART, '\r');
#endif    
  }
  /* put c to hardware here */
#ifdef PRINT_ON_USART  
  USART_SendData8(USART, c);
#else
  LINUART_SendData8(LINUART, c);
#endif
  return(c);
}

u8 getchar(void)
{
  u8 c;
  /* get c from hardware here */
#ifdef PRINT_ON_USART  
  while(!(USART->SR & USART_SR_RXNE));
  c = USART_ReceiveData8(USART);
#else
  while(!(LINUART->SR & LINUART_SR_RXNE));
  c = LINUART_ReceiveData8(LINUART);
#endif
  if (c == '\r')
  {
    c = '\n';
  }
  /* return (putchar(c)); */ /* echo */
  return(c); /* No echo */
}

/* Public functions ----------------------------------------------------------*/

/**
  * @brief Validation firmware main entry point.
  * @par Parameters:
  * None
  * @retval void None
  * @par Required preconditions:
  * None
  * @par Called functions:
  * Exhaustive and Functional test functions.
  */
void main(void)
{

  GPIO_Init_TypeDef GPIO_InitStructure;
  u8 val;
  char name[20];
  
  /* Init the MCO pin */
  CLK_CCOConfig(CLK_CCOSEL_CPU);
  CLK_CCOCmd(ENABLE);
  
  /* Init HSI */
  CLK_HSIConfig(DISABLE, CLK_HSI_DIV1);
  
  /* Init I/Os for LEDs */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP_LOW_FAST;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_2 | GPIO_Pin_1 | GPIO_Pin_0; /* LED1, LED2, LED3, LED4 */
  GPIO_Init(GPIOH, &GPIO_InitStructure);
  
  /* Init I/Os for LINUART Multiplexer control on ST79F5xx-EVAL board */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP_LOW_FAST;  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_Init(GPIOG, &GPIO_InitStructure);
  GPIO_Write(GPIOG, 0x40); /* Select USART2 connector */

#ifdef PRINT_ON_USART
  /* Init USART */
  USART_Init(USART,
             USART_WordLength_8D,
             USART_StopBits_1,
             USART_Parity_No,
             (USART_Clock_Disable | USART_CPOL_High | USART_CPHA_Middle),
             BAUD_RATE,
             MASTER_FREQUENCY,
             (USART_Mode_Tx_Enable | USART_Mode_Rx_Enable));
#endif

#ifdef PRINT_ON_LINUART
  /* Init LINUART */
  LINUART_Init(LINUART,
               LINUART_WordLength_8D,
               LINUART_StopBits_1,
               LINUART_Parity_No,
               BAUD_RATE,
               MASTER_FREQUENCY,
               (LINUART_Mode_Tx_Enable | LINUART_Mode_Rx_Enable));
#endif
  
  /* Print message on Hyper terminal */
  
  printf("\n\n");
#ifdef PRINT_ON_USART  
  printf("(USART)\n");
#else
  printf("(LINUART)\n");
#endif
  printf("==========================================\n");
  printf("===  S T 7 9  Firmware Library ALPHA1  ===\n");
  printf("==========================================\n");
  
  printf("Type your name > ");
  scanf("%s", name);
  printf("\nHello %s !\n", name);
  
  /* Toggles LEDs */
  val = 0x00;
  while (1)
  {
    GPIO_Write(GPIOH, val);
    val ^= GPIO_Pin_3 | GPIO_Pin_2 | GPIO_Pin_1 | GPIO_Pin_0;
    Delay((u16)60000);
    Delay((u16)60000);
  }

}

/**
  * @brief Reports the name of the source file and the source line number where
  * the assert error has occurred.
  * 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)
  * @retval void None
  * @par Required preconditions:
  * None
  * @par Called functions:
  * None
  */
#ifdef FULL_ASSERT
void assert_failed(u8 *file, u16 line)
#else
void assert_failed(void)
#endif
{
  /* Put enter your own code to manage an assert error */
}

/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -