求大神指导下:使用的STM32RCT6芯片,定义了一个数组,在系统初始化的时候,数据会变化,延时函数的时候也变。
typedef struct
{
u8 Address;
uint16_t Vibisility[3];
uint16_t Traffic;
uint16_t Solar_Power;
uint16_t Battery_Power;
uint16_t Time[6];
uint16_t Resave[4];
}DeviceParagram;
extern DeviceParagram DevicePara;
void System_Initialization(void)
{
RCC_Configuration(); //设置系统时钟为8MHZ(这个可以根据需要改)
UART_GPIO_Config();
NVIC_Config();
//RTC_CheckAndConfig(&systmtime);//配置RTC时钟
Timer2_Config(); //定时器2初始化配置
// EXTI_PA4_Config(); //4个外部中断源
ADC1_GPIO_Config();
ADC1_Mode_Config();
DO_GPIO_Config();
SysTick_Configuration();//滴答任务时钟配置
}
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus = ERROR;
RCC_DeInit();//设置RCC时钟为默认值
RCC_HSEConfig(RCC_HSE_ON); //打开外部高速时钟晶振
HSEStartUpStatus = RCC_WaitForHSEStartUp();//等待HSE起振
if(HSEStartUpStatus == SUCCESS) //SUCCESS:HSE
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB时钟HCLK 是SYSCLK
RCC_PCLK2Config(RCC_HCLK_Div1); //设置高速AHB时钟PCLK2 是HCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //设置低速AHB时钟HCLK1 是HCLK/2
FLASH_SetLatency(FLASH_Latency_2);//设置flash存储器延时时钟周期数
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//选择flash预取指缓存模式
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //设置PLL时钟源及倍频
RCC_PLLCmd(DISABLE);
}
//如果把没有使用的GPIO配置为模拟输入模式(关闭悬浮输入触发),可以减少耗散功率,提高芯片的EMI/EMC性能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
}
void SysTick_Configuration()
{
// Setup SysTick Timer for 1 msec interrupts
if(SysTick_Config((SystemCoreClock)/72 / 1000))//SystemCoreClock/8
{
//Capture error
while(1);
}
//设置SysTick时钟源为AHB总线时钟(HCLK)的8分频
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
//设置SysTick优先级,不设置则SysTick值为0x0F,01-00
NVIC_SetPriority(SysTick_IRQn, 0x04);
} |