使用cubeMX自动产生的sd卡程序,屏蔽中断后也可以正常读写是为什么?

2019-07-14 16:49发布

使用cubeMX 自动产生的sd卡程序,屏蔽中断函数后也可以正常读写,

请问这是何故啊 ??

在初始化时也是开始sd卡的中断


// 吧这个中断屏蔽后,sd卡也能够支持读写
void SDIO_IRQHandler(void)
{
  HAL_SD_IRQHandler(&hsd);
}

// 初始化
void MX_SDIO_SD_Init(void)
{

  hsd.Instance = SDIO;
  hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
  hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
  hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
  hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
  hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  hsd.Init.ClockDiv = 0;

}

void HAL_SD_MspInit(SD_HandleTypeDef* hsd)
{

  GPIO_InitTypeDef GPIO_InitStruct;
  if(hsd->Instance==SDIO)
  {

  
    __SDIO_CLK_ENABLE();
  
    /**SDIO GPIO Configuration   
    PC8     ------> SDIO_D0
    PC9     ------> SDIO_D1
    PC10     ------> SDIO_D2
    PC11     ------> SDIO_D3
    PC12     ------> SDIO_CK
    PD2     ------> SDIO_CMD
    */
    GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
                          |GPIO_PIN_12;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF12_SDIO;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF12_SDIO;
    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

    /* Peripheral interrupt init*/
    HAL_NVIC_SetPriority(SDIO_IRQn, 0, 1);
    HAL_NVIC_EnableIRQ(SDIO_IRQn);


  }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
骑猪去天山
1楼-- · 2019-07-15 01:54
 精彩回答 2  元偷偷看……
7vyydyfwef
2楼-- · 2019-07-15 02:51
骑猪去天山 发表于 2018-10-17 18:32
如果你没有用到中断读写数据,有没有中断都是一样的

你好,我已经初始化里面 已经配置了中断啊

    /* Peripheral interrupt init*/
    HAL_NVIC_SetPriority(SDIO_IRQn, 0, 1);
    HAL_NVIC_EnableIRQ(SDIO_IRQn);
骑猪去天山
3楼-- · 2019-07-15 02:56
7vyydyfwef 发表于 2018-10-17 18:42
你好,我已经初始化里面 已经配置了中断啊

    /* Peripheral interrupt init*/

这是开内核中断,你SD 都没有中断触发(触发事件)是不会进中断的
7vyydyfwef
4楼-- · 2019-07-15 07:50
骑猪去天山 发表于 2018-10-17 18:50
这是开内核中断,你SD 都没有中断触发(触发事件)是不会进中断的

那开sd中断在哪里啊 ??
ben233
5楼-- · 2019-07-15 08:56
读SD不应该用中断吧,这样比较容易冲突。
7vyydyfwef
6楼-- · 2019-07-15 09:31
 精彩回答 2  元偷偷看……

一周热门 更多>