
stm32cubemax
stm32cubemax
ADC差分采样
STM32H745启动与烧录问题
STM32G0b1 USB device cdc显示设备描述符请求失败
STM32CUBEMX最新版本6.14.1出现BUG
请问 cubemx 有计划支持生成基于 ATfE 编译器的 cmake 项目吗
设置RDP等级为2的同时,有什么办法可以确保后续还能够烧录程序
工程移植都有哪些需要注意的地方?
关于使用cubemx配置stm32g473re的opamp工作模式:Programmable gain amplifier mode with external filtering
{
/* 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 */
}