打印

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

[复制链接]
363|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
没名字的人|  楼主 | 2020-4-20 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神指导下:使用的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);
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

420

主题

432

帖子

0

粉丝