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

📄 main.c

📁 Spearhead2000的bootloader
💻 C
字号:
#include <apb_configuration.h>#include "gp_timers.h"#include "uhc_ahb.h"#include "uart.h"/*****************************************************************************//*                                   PLL CODE                                */                    /*****************************************************************************/void set_pll_p_value(unsigned int new_p_value){  unsigned int New_P_VALUE;  unsigned int __PLL_CONTROL_REGISTER;  /* The maximum supported p value for PLL is 5 */  if (new_p_value <= 5)    {      __PLL_CONTROL_REGISTER = APBControl->RESET_CLOCK_CONTROL_REGISTER;      __PLL_CONTROL_REGISTER = __PLL_CONTROL_REGISTER & 0xF8FFFFFFU;      New_P_VALUE = new_p_value << 24;      New_P_VALUE = New_P_VALUE & 0x07000000U;      __PLL_CONTROL_REGISTER = __PLL_CONTROL_REGISTER | New_P_VALUE;      APBControl->RESET_CLOCK_CONTROL_REGISTER = __PLL_CONTROL_REGISTER;    }}void set_pll_m_value(unsigned int New_M_Value){  unsigned __Reset_Clock_Register;    New_M_Value = New_M_Value & 0x000000FFU;    if ((New_M_Value >= 1) && (New_M_Value <= 255))    {      __Reset_Clock_Register = APBControl->RESET_CLOCK_CONTROL_REGISTER;      __Reset_Clock_Register = __Reset_Clock_Register & 0xFFFF00FFU;      __Reset_Clock_Register = __Reset_Clock_Register | (New_M_Value << 8);            APBControl->RESET_CLOCK_CONTROL_REGISTER = __Reset_Clock_Register;    }}void set_pll_n_value(unsigned int New_N_Value){  unsigned __Reset_Clock_Register;    New_N_Value = New_N_Value & 0x000000FFU;    if ((New_N_Value >= 3) && (New_N_Value <= 255))    {      __Reset_Clock_Register = APBControl->RESET_CLOCK_CONTROL_REGISTER;      __Reset_Clock_Register = __Reset_Clock_Register & 0xFF00FFFFU;      __Reset_Clock_Register = __Reset_Clock_Register | (New_N_Value << 16);            APBControl->RESET_CLOCK_CONTROL_REGISTER = __Reset_Clock_Register;    }}void change_pll_frequency(void){  unsigned int __PLL_CONTROL_REGISTER;  unsigned int __PLL_STATUS;  /* Ok. Give the command to PLL Wrapper */  __PLL_CONTROL_REGISTER = APBControl->RESET_CLOCK_CONTROL_REGISTER;  __PLL_CONTROL_REGISTER = __PLL_CONTROL_REGISTER | 0x80000000U;  APBControl->RESET_CLOCK_CONTROL_REGISTER = __PLL_CONTROL_REGISTER;  /* Wait for PLL Control Logic Feedback */  __PLL_STATUS = APBControl->Pll_Status_Reg;  __PLL_STATUS = __PLL_STATUS & 0x00000080U;  while (!__PLL_STATUS)    {      __PLL_STATUS = APBControl->Pll_Status_Reg;      __PLL_STATUS = __PLL_STATUS & 0x00000080U;    }  /* Final Step. Release Control Resources */  __PLL_CONTROL_REGISTER = APBControl->RESET_CLOCK_CONTROL_REGISTER;  __PLL_CONTROL_REGISTER = __PLL_CONTROL_REGISTER & 0x7FFFFFFFU;  APBControl->RESET_CLOCK_CONTROL_REGISTER = __PLL_CONTROL_REGISTER;}/*    The PLL Frequency is :       --                         -- FOut =   2 x N x Fin           --        ----------------    --             M x (2^P)      - Default Values ---------------------   - M = 1      - N = 20   => division by 20   - P = 1    - General Rules ----------------------   - > M and N cannot be at '0'   - > Maximum value for p is 5*/void SYS_init(){    APBControl->CLK_DISABLE_REGISTER |= ENABLE_CLK_PI;    APBControl->CLK_DISABLE_REGISTER |= ENABLE_HCLK_PI;    /* set PLL (AHB/APB clock 96MHz -- ARM clock 192 MHz) */    //set_pll_p_value(1);    //set_pll_m_value(1);    //set_pll_n_value(192);    //change_pll_frequency();}/*****************************************************************************//*                              END  PLL CODE                                */                    /*****************************************************************************//*****************************************************************************//*                              HOST CODE                                    */                    /*****************************************************************************/voidC_Entry(void){    	intctlInit();    	UART1_Init();   	gptInit();    	malloc_init();    	init_usbh();  	init_usb();    	runQueueHead();    	// main block	            	while(1)		            	{			            		event_usb();    	}			        }/*****************************************************************************/

⌨️ 快捷键说明

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