Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M
mfang2.0
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 92
    • Issues 92
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 1
    • Merge Requests 1
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • 魔方Web开发组
  • mfang2.0
  • Issues
  • #149

Closed
Open
Opened Jul 02, 2021 by 宋永裕@songyongyu💬
  • Report abuse
  • New issue
Report abuse New issue

[代码生成]外设的中断初始化代码问题讨论

外设的中断初始化函数,现在是放到外设的其中一个初始化函数里的,外设的配置不同,所放置的初始化函数可能就不同,“不固定和统一”。

问题:是否需要将中断初始化过程单独放到一个函数里?如MF_ATIM_Interrupt_Init()。

@huangzean @SongJuan @mengxiangchen

/**
  * @brief  ATIM_BDTRMode Initialization function
  * @param  void
  * @retval None
  */
void MF_ATIM_BDTRMode_Init(void)
{
    FL_GPIO_InitTypeDef    GPIO_InitStruct;
    FL_ATIM_BDTR_InitTypeDef    BDTRMode_InitStruct;

    GPIO_InitStruct.pin = FL_GPIO_PIN_11;
    GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    GPIO_InitStruct.remapPin = FL_ENABLE;

    FL_GPIO_Init(GPIOD, &GPIO_InitStruct);

    BDTRMode_InitStruct.OSSRState = FL_ATIM_OSSR_DISABLE;
    BDTRMode_InitStruct.OSSIState = FL_ATIM_OSSI_DISABLE;
    BDTRMode_InitStruct.lockLevel = FL_ATIM_LOCK_LEVEL_OFF;
    BDTRMode_InitStruct.deadTime = 0x00;
    BDTRMode_InitStruct.breakState = FL_DISABLE;
    BDTRMode_InitStruct.breakFilter = FL_ATIM_BREAK_FILTER_DIV1;
    BDTRMode_InitStruct.breakPolarity = FL_ATIM_BREAK_POLARITY_LOW;
    BDTRMode_InitStruct.automaticOutput = FL_DISABLE;
    BDTRMode_InitStruct.gatedBrakeSignal_1 = FL_ATIM_BREAK1_GATE_AUTO;
    BDTRMode_InitStruct.gatedBrakeSignal_2 = FL_ATIM_BREAK2_GATE_AUTO;
    BDTRMode_InitStruct.brakeSignalCombined = FL_ATIM_BREAK_COMBINATION_OR;

    FL_ATIM_BDTR_Init(ATIM, &BDTRMode_InitStruct);

    /*Start Of Interrupt Initialization*/
    FL_ATIM_ClearFlag_Break(ATIM);
    FL_ATIM_EnableIT_Break(ATIM);

    FL_ATIM_ClearFlag_COM(ATIM);
    FL_ATIM_EnableIT_COM(ATIM);

    FL_ATIM_ClearFlag_Trigger(ATIM);
    FL_ATIM_EnableIT_Trigger(ATIM);
    /*End Of Interrupt Initialization*/    
}
 
/**
  * @brief  ATIM_TimerBase Initialization function
  * @param  void
  * @retval None
  */
void MF_ATIM_TimerBase_Init(void)
{
    FL_ATIM_InitTypeDef    TimerBase_InitStruct;

    TimerBase_InitStruct.clockSource = FL_RCC_ATIM_CLK_SOURCE_APB2CLK;
    TimerBase_InitStruct.prescaler = (uint16_t)0x0000;
    TimerBase_InitStruct.counterMode = FL_ATIM_COUNTER_DIR_UP;
    TimerBase_InitStruct.autoReload = 0xFFFFU;
    TimerBase_InitStruct.autoReloadState = FL_DISABLE;
    TimerBase_InitStruct.clockDivision = FL_ATIM_CLK_DIVISION_DIV1;
    TimerBase_InitStruct.repetitionCounter = 0;

    FL_ATIM_Init(ATIM, &TimerBase_InitStruct);    
}
 
/**
  * @brief  ATIM_ETRMode Initialization function
  * @param  void
  * @retval None
  */
void MF_ATIM_ETRMode_Init(void)
{
    FL_GPIO_InitTypeDef    GPIO_InitStruct;
    FL_ATIM_ETR_InitTypeDef    ETRMode_InitStruct;

    GPIO_InitStruct.pin = FL_GPIO_PIN_12;
    GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    GPIO_InitStruct.remapPin = FL_ENABLE;

    FL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    ETRMode_InitStruct.useExternalTrigger = FL_DISABLE;
    ETRMode_InitStruct.ETRFilter = FL_ATIM_ETR_FILTER_DIV1;
    ETRMode_InitStruct.ETRPolarity = FL_ATIM_ETR_POLARITY_NORMAL;
    ETRMode_InitStruct.ETRClockDivision = FL_ATIM_ETR_PSC_DIV1;

    FL_ATIM_ETR_Init(ATIM, &ETRMode_InitStruct);    
}
 
/**
  * @brief  ATIM_Channel2 Initialization function
  * @param  void
  * @retval None
  */
void MF_ATIM_Channel2_Init(void)
{
    FL_GPIO_InitTypeDef    GPIO_InitStruct;
    FL_ATIM_IC_InitTypeDef    ATIM_InitStruct;

    GPIO_InitStruct.pin = FL_GPIO_PIN_5;
    GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    GPIO_InitStruct.remapPin = FL_DISABLE;

    FL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    ATIM_InitStruct.captureState = FL_DISABLE;
    ATIM_InitStruct.ICPolarity = FL_ATIM_IC_POLARITY_NORMAL;
    ATIM_InitStruct.ICActiveInput = FL_ATIM_CHANNEL_MODE_INPUT_NORMAL;
    ATIM_InitStruct.ICPrescaler = FL_ATIM_IC_PSC_DIV1;
    ATIM_InitStruct.ICFilter = FL_ATIM_IC_FILTER_DIV1;

    FL_ATIM_IC_Init(ATIM, FL_ATIM_CHANNEL_2, &ATIM_InitStruct);    
}
 
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
0
Labels
None
Assign labels
  • View project labels
Reference: fmsh-web-develop/mfang2.0#149