野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12815|回复: 1

求大神指导下:用KEIL仿真的时候发现定义的结构体数据乱变

[复制链接]
发表于 2019-8-20 15:56:29 | 显示全部楼层 |阅读模式
求大神指导下:使用的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);
}

回复

使用道具 举报

发表于 2019-8-21 09:01:29 | 显示全部楼层
没明白具体怎么个变乱法
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 15:38 , Processed in 0.034739 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表