
STM32G030K6Tx使用ADC+DMA进行6通道ADC采集,DMA传输错位问题。
STM32H7使用HAL库如何控制外置USB HS PHY进入低功耗
《年中视频学习心得》+我在年中学习STM32心得
touchgfx handletickevent 执行的频率 是由什么决定的
touchgfx4.25 颜色错误?
ubuntu 编译stm32cubmax 生成的cmake工程,在最后链接阶段报错,can don't find-lc_none
STM32CubeMX居然卡死了
STM32G474VET6如何配置HRTIM的中心对齐模式
用STM32的時候是直接用MDK方便還是在vscode用keil插件方便一些
用cubemx配置好串口后,再配置一个adc输入就会卡在HardFault_Handler里不动了。
{
/* 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 */
}