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

📄 board.c

📁 RT-Thread是发展中的下一代微内核嵌入式实时操作系统
💻 C
字号:
/* * File      : board.c * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006 - 2009 RT-Thread Develop Team * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://openlab.rt-thread.com/license/LICENSE * * Change Logs: * Date           Author       Notes * 2006-08-23     Bernard      first implementation */#include <rthw.h>#include <rtthread.h>#include <stdio.h>#include "stm32f10x_lib.h"/** * @addtogroup STM32 *//*@{*/ErrorStatus HSEStartUpStatus;/******************************************************************************* * Function Name  : RCC_Configuration * Description    : Configures the different system clocks. * Input          : None * Output         : None * Return         : None *******************************************************************************/void RCC_Configuration(void){	/* RCC system reset(for debug purpose) */	RCC_DeInit();	/* Enable HSE */	RCC_HSEConfig(RCC_HSE_ON);	/* Wait till HSE is ready */	HSEStartUpStatus = RCC_WaitForHSEStartUp();	if(HSEStartUpStatus == SUCCESS)	{		/* HCLK = SYSCLK */		RCC_HCLKConfig(RCC_SYSCLK_Div1);		/* PCLK2 = HCLK */		RCC_PCLK2Config(RCC_HCLK_Div1);		/* PCLK1 = HCLK/2 */		RCC_PCLK1Config(RCC_HCLK_Div2);		/* Flash 2 wait state */		FLASH_SetLatency(FLASH_Latency_2);		/* Enable Prefetch Buffer */		FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);		/* PLLCLK = 8MHz * 9 = 72 MHz */		RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);		/* Enable PLL */		RCC_PLLCmd(ENABLE);		/* Wait till PLL is ready */		while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;		/* Select PLL as system clock source */		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);		/* Wait till PLL is used as system clock source */		while(RCC_GetSYSCLKSource() != 0x08) ;	}	/* Enable USART1 and GPIOA clock */	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);}/******************************************************************************** Function Name  : NVIC_Configuration* Description    : Configures Vector Table base location.* Input          : None* Output         : None* Return         : None*******************************************************************************/void NVIC_Configuration(void){#ifdef  VECT_TAB_RAM	/* Set the Vector Table base location at 0x20000000 */	NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);#else  /* VECT_TAB_FLASH  */	/* Set the Vector Table base location at 0x08000000 */	NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);#endif}/******************************************************************************* * Function Name  : GPIO_Configuration * Description    : Configures the different GPIO ports. * Input          : None * Output         : None * Return         : None *******************************************************************************/void GPIO_Configuration(void){	GPIO_InitTypeDef GPIO_InitStructure;	/* Configure USART1 Tx (PA.09) as alternate function push-pull */	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	GPIO_Init(GPIOA, &GPIO_InitStructure);	/* Configure USART1 Rx (PA.10) as input floating */	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;	GPIO_Init(GPIOA, &GPIO_InitStructure);}/******************************************************************************* * Function Name  : USART_Configuration * Description    : Configures the USART1. * Input          : None * Output         : None * Return         : None *******************************************************************************/void USART_Configuration(void){	USART_InitTypeDef USART_InitStructure;	/* USART1 configured as follow:		- BaudRate = 115200 baud		- Word Length = 8 Bits		- One Stop Bit		- No parity		- Hardware flow control disabled (RTS and CTS signals)		- Receive and transmit enabled		- USART Clock disabled		- USART CPOL: Clock is active low		- USART CPHA: Data is captured on the middle		- USART LastBit: The clock pulse of the last data bit is not output to		  the SCLK pin	*/	USART_InitStructure.USART_BaudRate = 115200;	USART_InitStructure.USART_WordLength = USART_WordLength_8b;	USART_InitStructure.USART_StopBits = USART_StopBits_1;	USART_InitStructure.USART_Parity = USART_Parity_No;	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	USART_InitStructure.USART_Clock = USART_Clock_Disable;	USART_InitStructure.USART_CPOL = USART_CPOL_Low;	USART_InitStructure.USART_CPHA = USART_CPHA_2Edge;	USART_InitStructure.USART_LastBit = USART_LastBit_Disable;	USART_Init(USART1, &USART_InitStructure);	/* Enable USART1 */	USART_Cmd(USART1, ENABLE);}/******************************************************************************* * Function Name  : SysTick_Configuration * Description    : Configures the SysTick for OS tick. * Input          : None * Output         : None * Return         : None *******************************************************************************/void  SysTick_Configuration(void){    RCC_ClocksTypeDef  rcc_clocks;    rt_uint32_t         cnts;    RCC_GetClocksFreq(&rcc_clocks);    cnts = (rt_uint32_t)rcc_clocks.HCLK_Frequency / RT_TICK_PER_SECOND;    SysTick_SetReload(cnts);    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);    SysTick_CounterCmd(SysTick_Counter_Enable);    SysTick_ITConfig(ENABLE);}extern void rt_hw_interrupt_thread_switch(void);/** * This is the timer interrupt service routine. *  */void rt_hw_timer_handler(void){	/* enter interrupt */	rt_interrupt_enter();		rt_tick_increase();		/* leave interrupt */	rt_interrupt_leave();	rt_hw_interrupt_thread_switch();}/** * This function will initial sam7x256 board. */void rt_hw_board_init(){	/* Configure the system clocks */	RCC_Configuration();	/* NVIC Configuration */	NVIC_Configuration();	/* Configure the GPIOs */	GPIO_Configuration();	/* Configure the USART1 */	USART_Configuration();		/* Configure the SysTick */	SysTick_Configuration();}/*@}*/

⌨️ 快捷键说明

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