簡體   English   中英

如何訪問和更改結構成員的價值

[英]How to access and change value of struct members

typedef struct
{
    float32                   frequency;     
    Ifx_Priority              isrPriority;  
    IfxSrc_Tos                isrProvider;   
    float32                   minResolution; 
    IfxStdIf_Timer_TrigConfig trigger;      
    float32                   startOffset;   
} IfxStdIf_Timer_Config;

typedef struct
    {
        IfxStdIf_Timer_Config base;                 
        Ifx_GTM              *gtm;                  
        IfxGtm_Tom            tom;                  
        IfxGtm_Tom_Ch         timerChannel;        
        IfxGtm_Tom_ToutMap   *triggerOut;           
        IfxGtm_Tom_Ch_ClkSrc  clock;                
        IfxGtm_IrqMode        irqModeTimer;        
        IfxGtm_IrqMode        irqModeTrigger;       
    } IfxGtm_Tom_Timer_Config;

typedef struct {
            uint32                       size;
            HAL_IF_TIMER_userConfig     *table;
            IfxGtm_Tom_Timer_Config     *defaultSettings;
            } HAL_IF_Tom_Timer_Config; 

分配值:

HAL_IF_TIMER_userConfig userConfig[NUM_TIMER_CHANNEL] = {
{ 1000, ISR_PRIORITY_1ms_Task, 0, IfxSrc_Tos_cpu0, IfxGtm_Tom_Ch_1, IfxGtm_Tom_Ch_ClkSrc_cmuFxclk1, OneMs, 00 },
{ 5000, ISR_PRIORITY_200us_Critical_Task, 0, IfxSrc_Tos_cpu0, IfxGtm_Tom_Ch_2, IfxGtm_Tom_Ch_ClkSrc_cmuFxclk1, TwoHundredus, 01 },
{ 1, ISR_PRIORITY_1s, 0, IfxSrc_Tos_cpu0, IfxGtm_Tom_Ch_4, IfxGtm_Tom_Ch_ClkSrc_cmuFxclk4, Ones, 02 }

IfxGtm_Tom_Timer_Config defaultTomTimerConfig =
    {{1000, 0, IfxSrc_Tos_cpu0, 0, {FALSE, 0, 0, IfxSrc_Tos_cpu0, IfxPort_OutputMode_pushPull, IfxPort_PadDriver_cmosAutomotiveSpeed1, FALSE, FALSE }, IfxStdIf_Timer_CountDir_up, 0.0}, &MODULE_GTM, IfxGtm_Tom_0, IfxGtm_Tom_Ch_0, NULL_PTR, IfxGtm_Tom_Ch_ClkSrc_cmuFxclk0, IfxGtm_IrqMode_level, IfxGtm_IrqMode_level};

HAL_IF_Tom_Timer_Config TomTimerConfig =
{NUM_TIMER_CHANNEL, userConfig, &defaultTomTimerConfig};

HAL_IF_Tom_Timer_Config g_TomTimerConfig;

如果我已經為所有結構成員分配了值,那么在運行時如何訪問和更改頻率?

運行:

g_TomTimerConfig = TomTimerConfig;
HAL_IF_TIMER_userConfig *userTable = TomTimerConfig.table;
uint32 i;

    for (i = 0; i < g_TomTimerConfig.size; i++, ++userTable) {
        g_TomTimerConfig.defaultSettings->base.frequency = userTable->frequency;
};

這部分不起作用:

g_TomTimerConfig->defaultSettings->base->frequency

我正在嘗試創建默認設置和一系列用戶設置以初始化一些設置。 提前致謝

g_TomTimerConfig是一個結構,請使用.

g_TomTimerConfig.defaultSettings

defaultSettings是指向結構的指針,因此請使用->

g_TomTimerConfig.defaultSettings->base

base是一個結構,因此請使用.

g_TomTimerConfig.defaultSettings->base.frequency

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM