166 lines
5.2 KiB
C
166 lines
5.2 KiB
C
/*——————————————————————————
|
||
* 文 件 名:Init.c
|
||
* 文件说明: 初始化源文件
|
||
*
|
||
* 当前版本:V8.0
|
||
* 作 者:ZL
|
||
* 开始日期:2013-12-30
|
||
*———————————————————————————*/
|
||
|
||
#include "Init.h"
|
||
|
||
void RCC_Init(void)
|
||
{
|
||
/* Enable Clock Security System(CSS): this will generate an NMI exception
|
||
when HSE clock fails */
|
||
NVIC_InitTypeDef NVIC_InitStructure;
|
||
NVIC_InitStructure.NVIC_IRQChannel = RCC_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
|
||
RCC_ClockSecuritySystemCmd(ENABLE);
|
||
}
|
||
|
||
|
||
|
||
void gpio_init(st_gpio_config ioconfig)
|
||
{
|
||
GPIO_InitTypeDef GPIO_InitStructure;
|
||
|
||
RCC_APB2PeriphClockCmd(ioconfig.GPIO_clk, ENABLE);
|
||
|
||
GPIO_InitStructure.GPIO_Pin = ioconfig.GPIO_Pin;
|
||
GPIO_InitStructure.GPIO_Mode = ioconfig.GPIO_mode;
|
||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||
|
||
GPIO_Init(ioconfig.GPIO_port, &GPIO_InitStructure);
|
||
}
|
||
|
||
/*—————————————————————————
|
||
* 函 数 名:NVIC_Init
|
||
* 输入参数:None
|
||
* 输出参数:None
|
||
* 返 回 值:None
|
||
* 功能说明:中断向量初始化
|
||
*——————————————————————————*/
|
||
#define FLASH_APP_ADDRESS 0x08005000
|
||
void Nvic_Init(void)
|
||
{
|
||
// NVIC_InitTypeDef NVIC_InitStructure;
|
||
|
||
//NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//重定义中断向量表的位置
|
||
NVIC_SetVectorTable(NVIC_VectTab_FLASH,FLASH_APP_ADDRESS);
|
||
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
|
||
|
||
|
||
/* Enable and configure RCC global IRQ channel */
|
||
/*
|
||
NVIC_InitStructure.NVIC_IRQChannel = SysTick_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
*/
|
||
|
||
/* Enable and configure RCC global IRQ channel */
|
||
|
||
|
||
/*
|
||
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel7_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = DMA2_Channel4_5_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
|
||
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel2_IRQn;
|
||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 6;
|
||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;
|
||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||
NVIC_Init(&NVIC_InitStructure);
|
||
*/
|
||
}
|
||
|
||
/*——————————————————————————
|
||
* 函 数 名:RCC_IRQHandler
|
||
* 输入参数:None
|
||
* 输出参数:None
|
||
* 返 回 值:None
|
||
* 功能说明:RCC中断服务函数
|
||
*——————————————————————————*/
|
||
void RCC_IRQHandler(void)
|
||
{
|
||
if(RCC_GetITStatus(RCC_IT_HSERDY) != RESET)
|
||
{
|
||
/* Clear HSERDY interrupt pending bit */
|
||
RCC_ClearITPendingBit(RCC_IT_HSERDY);
|
||
|
||
/* Check if the HSE clock is still available */
|
||
if (RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET)
|
||
{
|
||
/* Enable PLL: once the PLL is ready the PLLRDY interrupt is generated */
|
||
RCC_PLLCmd(ENABLE);
|
||
}
|
||
}
|
||
|
||
if(RCC_GetITStatus(RCC_IT_PLLRDY) != RESET)
|
||
{
|
||
/* Clear PLLRDY interrupt pending bit */
|
||
RCC_ClearITPendingBit(RCC_IT_PLLRDY);
|
||
|
||
/* Check if the PLL is still locked */
|
||
if (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) != RESET)
|
||
{
|
||
/* Select PLL as system clock source */
|
||
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
|
||
}
|
||
}
|
||
}
|