银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-07-29 | gingko | 初次建立 |
1.在主界面选择File–>New Project 或者直接点击ACCEE TO MCU SELECTOR 2.出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置 在搜索栏的下面,提供的各 种查找方式,可以选择芯片内核,型号,等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32H750IBKx。 3.配置RCC,使用外部时钟源 4.时基源选择SysTick 5.将PA10,PB7,PB8设置为GPIO_Output 6.引脚模式配置 7.配置串口 在NVIC Settings一栏使能接收中断 引脚配置 8.配置ADC 9.配置QUADSPI 10.配置SDMMC 11.配置FATFS 12.配置SPI 13.配置FMC 14.时钟源设置,选择外部高速时钟源,配置为最大主频 15.工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 IDE我们使用的是 MDK V5.27 16.点击Code Generator,进行进一步配置
1.介绍
引导模型 | 存储器 |
XiP | QSPI Flash memory |
NOR Flash memory(on FMC) | |
BootROM | SPI-NOR(emulated with QSPI 1 line) |
SDCARD | |
Volatile memory | Internal SRAM |
External SRAM | |
External SDRAM | |
External PSRAM |
int main(void) { int k; unsigned char buffer[1024]; unsigned short int temp = 0; FIL fil; static FRESULT res; FATFS fatfs; unsigned int counter; unsigned long int ncounter = 0; FILINFO finfo; CPU_CACHE_Enable(); HAL_Init(); i2c.initialize(); axp152.initialize(); axp152.set_dcdc1(3500);//[ARM & FPGA] axp152.set_dcdc2(1200);//[FPGA INT] axp152.set_dcdc3(3300);//[DCOUT3] axp152.set_dcdc4(3300);//[DCOUT4] axp152.set_aldo1(3300);//[BK3] axp152.set_aldo2(3300);//[ALDOOUT2] axp152.set_dldo1(3300);//[BK0] axp152.set_dldo2(3300);//[BK1] HAL_Delay(200); SystemClock_Config(); MX_GPIO_Init(); MX_FMC_Init(); MX_USART2_UART_Init(); MX_QUADSPI_Init(); MX_ADC1_Init(); MX_ADC3_Init(); MX_SDMMC1_SD_Init(); MX_FATFS_Init(); MX_DMA_Init(); MX_SPI4_Init(); BSP_SDRAM_Init(); usart2.initialize(115200); usart2.printf("iCore4TX Bootloader(SDRAM) V%s\r\n",VER); /* Initialize the SDCARD through the FATFS, copy binary to its execution area SDRAM */ if(res != RES_OK){ led_trade(); } res = f_open(&fil,"0:/app.bin",FA_READ); if(res != RES_OK){ led_trade(); } res = f_lseek(&fil,0); if(res != RES_OK){ led_trade(); } f_stat ("0:/app.bin",&finfo); while(ncounter < finfo.fsize) { res = f_read(&fil,buffer,1024,&counter); if(res != RES_OK){ led_trade(); } for(k = 0; k < counter/2; k++) { temp = (buffer[2*k + 1] << 8) + buffer[2*k]; write_sdram(ncounter/2,temp); ncounter = ncounter + 2; } } f_close(&fil); HAL_SetFMCMemorySwappingConfig(FMC_SWAPBMAP_SDRAM_SRAM); MPU_Config(); CPU_CACHE_Disable(); SysTick->CTRL = 0; JumpToApplication = (pFunction) (*(__IO uint32_t*) (APPLICATION_ADDRESS + 4)); __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS); JumpToApplication(); while (1) { } }
uint8_t BSP_SDRAM_ReadData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize) { if(HAL_SDRAM_Read_32b(&sdramHandle, (uint32_t *)uwStartAddress, pData , uwDataSize) != HAL_OK) { return SDRAM_ERROR; } else { return SDRAM_OK; } }
uint8_t BSP_SDRAM_WriteData(uint32_t uwStartAddress, uint32_t *pData, uint32_t uwDataSize) { if(HAL_SDRAM_Write_32b(&sdramHandle, (uint32_t *)uwStartAddress, pData, uwDataSize) != HAL_OK) { return SDRAM_ERROR; } else { return SDRAM_OK; } }
uint8_t BSP_SDRAM_Sendcmd(FMC_SDRAM_CommandTypeDef *SdramCmd) { if(HAL_SDRAM_SendCommand(&sdramHandle, SdramCmd, SDRAM_TIMEOUT) != HAL_OK) { return SDRAM_ERROR; } else { return SDRAM_OK; } }
FRESULT f_mount ( //挂载/卸载逻辑驱动器 FATFS* fs, /* 指向文件系统对象的指针*/ const TCHAR* path, /* 要安装/卸载的逻辑驱动器号 */ BYTE opt /* 模式选项0:不安装(延迟安装),1:立即安装*/ )
FRESULT f_open ( //打开或创建文件 FIL* fp, /* 指向空白文件对象的指针 */ const TCHAR* path, /* 指向文件名的指针 */ BYTE mode /* 访问模式和文件打开模式标志 */ )
FRESULT f_read ( //读文件 FIL* fp, /* 指向文件对象的指针 */ void* buff, /* 指向数据缓冲区的指针 */ UINT btr, /* 读取的字节数 */ UINT* br /* 指向读取的字节数的指针 */ )
FRESULT f_write ( //写文件 FIL* fp, /* 指向文件对象的指针 */ const void* buff, /* 指向要写入的数据的指针 */ UINT btw, /* 要写入的字节数 */ UINT* bw /* 指向写入字节数的指针 */ )
FRESULT f_sync ( //冲洗一个写文件的缓存信息 FIL* fp /* 指向文件对象的指针 */ )
FRESULT f_close ( //关闭一个文件 FIL* fp /* 指向要关闭的文件对象的指针 */ )
FRESULT f_lseek ( //移动文件读/写指针 FIL* fp, /* 指向文件对象的指针 */ FSIZE_t ofs /* 指向文件头的指针 */ )
FRESULT f_opendir ( //创建目录对象 DIR* dp, /* 指向要创建的目录对象的指针 */ const TCHAR* path /* 指向目录路径的指针 */ )
FRESULT f_closedir ( // 关闭目录 DIR *dp /* 指向要关闭的目录对象的指针 */ )
FRESULT f_readdir ( //顺序读取目录条目 DIR* dp, /* 指向打开目录对象的指针 */ FILINFO* fno /* 指向要返回的文件信息的指针 */ )
FRESULT f_stat ( //获取文件状态 const TCHAR* path, /* 指向文件路径的指针 */ FILINFO* fno /* 指向要返回的文件信息的指针 */ )
FRESULT f_getfree ( //获取空闲簇数 const TCHAR* path, /* 逻辑驱动器号的路径名 */ DWORD* nclst, /* 指向变量的指针以返回空闲簇的数量*/ FATFS** fatfs /* 返回指向相应文件系统对象的指针的指针 */ )
FRESULT f_truncate ( //截断文件 FIL* fp /* 指向文件对象的指针 */ )
FRESULT f_unlink ( //删除一个文件或目录 const TCHAR* path /* 指向文件或目录路径的指针 */ )
FRESULT f_mkdir ( //创建一个目录 const TCHAR* path /* 指向目录路径的指针 */ )
FRESULT f_rename ( //重命名文件/目录 const TCHAR* path_old, /* 指向要重命名的对象名称的指针 */ const TCHAR* path_new /* 指向新名称的指针 */ )
iCore4TX核心板ARM_LED有间隔的闪烁。