
《年中视频学习心得》+我在年中学习STM32心得
STM32F405RGT6 ADC2+TIM4触发+DMA(DMA2_Stream2_CH1)+DMA中断会死机(取消中断后完全正常)
嘉立创和淘宝买的STM32L496芯片丝印不一样,能告诉我这两个丝印有什么区别吗?
STM32WB55使用cubemx生成的代码编译报错
stm32cubemx在联网时无法启动,断网时可正常启动。
STM32H7R7 CubeMX无配置问题
個人中心的頭像怎麽換掉
如何调整CubeMX的默认引脚
cudeide执行run是烧录还是只是执行呢
無綫藍牙低功耗板卡NUCLEO-WBA65RI
{
/* USER CODE BEGIN SDMMC1_Init 0 */
/* USER CODE END SDMMC1_Init 0 */
/* USER CODE BEGIN SDMMC1_Init 1 */
/* USER CODE END SDMMC1_Init 1 */
hsd1.Instance = SDMMC1;
hsd1.Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING;
hsd1.Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE;
hsd1.Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE;
hsd1.Init.BusWide = SDMMC_BUS_WIDE_4B;
hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;
hsd1.Init.ClockDiv = 0;
/* USER CODE BEGIN SDMMC1_Init 2 */
hsd1.Init.BusWide = SDMMC_BUS_WIDE_1B; //初始化时改为1线,否则卡死在BSP_SD_Init中
/* USER CODE END SDMMC1_Init 2 */
}
金士顿32G内存卡运行正常,更换为16G内存卡却总是卡在下面的死循环:while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DBCKEND))
{
if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL))
{
*(tempscr + index) = SDMMC_ReadFIFO(hsd->Instance);
index++;
}
if((HAL_GetTick() - tickstart) >= SDMMC_DATATIMEOUT)
{
return HAL_SD_ERROR_TIMEOUT;
}
}
测试主函数:
main(void)
{
/* USER CODE BEGIN 1 */
uint32_t ii;
DWORD frr;
FATFS *FSS;
SD_POWER_ON;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_SDMMC1_SD_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(BSP_SD_IsDetected() != SD_NOT_PRESENT)
{
HAL_Delay(1000u);
if(BSP_SD_Init() == MSD_OK)
{
retSD = FATFS_LinkDriver(&SD_Driver, SDPath);
if(retSD==0u)
{
retSD = f_mount(&SDFatFS,(TCHAR const *)SDPath,1u);
FSS = &SDFatFS;
retSD = f_getfree((TCHAR const *)SDPath,&frr,&FSS);
ii = frr*(SDFatFS.csize)/2048;
retSD = f_mkdir("TEST0");
retSD = f_mkdir("TEST1");
retSD = f_mkdir("TEST2");
f_mount(NULL,(TCHAR const*)SDPath,1u);
}
OKcnt++;
}
else
{
ERRcnt++;
}
}
}
/* USER CODE END 3 */
}