用户工具

站点工具


icore4t_50

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
icore4t_50 [2020/03/25 10:42]
zgf 创建
icore4t_50 [2022/04/01 10:55] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-03- ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-03- ​ |  gingko ​ |  初次建立 ​ | 
行 140: 行 139:
 ==== 二、 实验设备及平台 ==== ==== 二、 实验设备及平台 ====
  
-  - iCore4T 双核心板。+  - iCore4T 双核心板。[[https://​item.taobao.com/​item.htm?​spm=a1z10.1-c.w137644-251734891.3.5923532fDrMDOe&​id=610595120319|点击购买]]
   - iCore4T 扩展底板。   - iCore4T 扩展底板。
-  - JLINK(或相同功能)仿真器。+  - JLINK(或相同功能)仿真器。[[https://​item.taobao.com/​item.htm?​id=554869837940|点击购买]]
   - Micro USB线缆。   - Micro USB线缆。
   - SD卡。   - SD卡。
行 167: 行 166:
     * 2) 必须将新程序的中断向量表相应的移动,移动的偏移量为 x;     * 2) 必须将新程序的中断向量表相应的移动,移动的偏移量为 x;
   * 以上 IAP 过程是针对内部 FLASH 来说的,而我们的 STM32H750 实际上还有SDIO外设接口,iCore4T核心板上也带有SD卡槽。   * 以上 IAP 过程是针对内部 FLASH 来说的,而我们的 STM32H750 实际上还有SDIO外设接口,iCore4T核心板上也带有SD卡槽。
-{{ :icore4t:icore4t_arm_hal_50_1.png?direct |}}+{{ :icore4t:icore4t_arm_hal_50_3.png?direct |}}
   * 在本实验中,STM32 具有 IAP(在应用编程)功能,实现用户程序在运行的过程中对 User Flash 部分区域进行烧写来实现固件程序的更新升级,本实验有两部分代码(Bootloader 程序和 APP程序),第一部分代码不执行正常的功能操作,来执行对第二部分代码的更新,第二部分代码才是真正的功能代码,将第二部分代码产生的 bin 文件存放在 SD 卡中供 STM32 更新升级。如果直接上电则执行第二部分代码,如果按下 ARM-KEY 上电,则执行第二部分代码的更新升级。   * 在本实验中,STM32 具有 IAP(在应用编程)功能,实现用户程序在运行的过程中对 User Flash 部分区域进行烧写来实现固件程序的更新升级,本实验有两部分代码(Bootloader 程序和 APP程序),第一部分代码不执行正常的功能操作,来执行对第二部分代码的更新,第二部分代码才是真正的功能代码,将第二部分代码产生的 bin 文件存放在 SD 卡中供 STM32 更新升级。如果直接上电则执行第二部分代码,如果按下 ARM-KEY 上电,则执行第二部分代码的更新升级。
 ==== 四、 IAP实验程序 ==== ==== 四、 IAP实验程序 ====
行 186: 行 185:
     FILINFO finfo;     FILINFO finfo;
  
-  CPU_CACHE_Enable(); ​   +    ​CPU_CACHE_Enable(); ​   
-   HAL_Init();​ +    HAL_Init();​ 
-   SystemClock_Config();​+    SystemClock_Config();​
     i2c.initialize();​     i2c.initialize();​
     axp152.initialize();​     axp152.initialize();​
行 199: 行 198:
     axp152.set_dldo1(3300);//​[FPGA BK7][Adjustable]     axp152.set_dldo1(3300);//​[FPGA BK7][Adjustable]
     axp152.set_dldo2(3300);//​[FPGA BK5][Adjustable]     axp152.set_dldo2(3300);//​[FPGA BK5][Adjustable]
-  MX_GPIO_Init();​ +    ​MX_GPIO_Init();​ 
-   MX_QUADSPI_Init();​ +    MX_QUADSPI_Init();​ 
-   MX_SDMMC1_SD_Init();​ +    MX_SDMMC1_SD_Init();​ 
-   MX_FATFS_Init();​+    MX_FATFS_Init();​
     LED_ON;     LED_ON;
     BSP_QSPI_Init();​     BSP_QSPI_Init();​
行 416: 行 415:
 <code c> <code c>
 FRESULT f_mount (        //​挂载/​卸载逻辑驱动器 FRESULT f_mount (        //​挂载/​卸载逻辑驱动器
-FATFS* fs, /* 指向文件系统对象的指针*/​ +FATFS* fs,          /* 指向文件系统对象的指针*/​ 
-const TCHAR* path, /* 要安装/​卸载的逻辑驱动器号 */ +const TCHAR* path,       ​/* 要安装/​卸载的逻辑驱动器号 */ 
-BYTE opt      /* 模式选项0:不安装(延迟安装),1:立即安装*/​+BYTE opt  /* 模式选项0:不安装(延迟安装),1:立即安装*/​
 ) )
  
 </​code> ​ </​code> ​
 <code c> <code c>
-FRESULT f_open (         ​//​打开或创建文件 +FRESULT f_open (                 ​//​打开或创建文件 
- FIL* fp,      /* 指向空白文件对象的指针 */ + FIL* fp,  /* 指向空白文件对象的指针 */ 
- const TCHAR* path, /* 指向文件名的指针 */ + const TCHAR* path,  /* 指向文件名的指针 */ 
- BYTE mode /* 访问模式和文件打开模式标志 */+ BYTE mode  /* 访问模式和文件打开模式标志 */
 ) )
  
 </​code> ​ </​code> ​
 <code c> <code c>
-FRESULT f_read (         ​//读文件+FRESULT f_read (                  //读文件
  FIL* fp,           /* 指向文件对象的指针 */  FIL* fp,           /* 指向文件对象的指针 */
  void* buff,​  ​         /* 指向数据缓冲区的指针 */  void* buff,​  ​         /* 指向数据缓冲区的指针 */
  UINT btr,           /* 读取的字节数 */  UINT btr,           /* 读取的字节数 */
- UINT* br                /* 指向读取的字节数的指针 */+ UINT* br           ​/* 指向读取的字节数的指针 */
 ) )
  
 </​code> ​ </​code> ​
 <code c> <code c>
-FRESULT f_write (         ​//​写文件 +FRESULT f_write (                 ​//​写文件 
- FIL* fp,       ​/* 指向文件对象的指针 */ + FIL* fp,   ​/* 指向文件对象的指针 */ 
- const void* buff,       ​/* 指向要写入的数据的指针 */ + const void* buff,   ​/* 指向要写入的数据的指针 */ 
- UINT btw,            /* 要写入的字节数 */ + UINT btw,           ​/* 要写入的字节数 */ 
- UINT* bw       ​/* 指向写入字节数的指针 */+ UINT* bw   ​/* 指向写入字节数的指针 */
 ) )
  
行 450: 行 449:
 <code c> <code c>
 FRESULT f_sync (          //​冲洗一个写文件的缓存信息 FRESULT f_sync (          //​冲洗一个写文件的缓存信息
- FIL* fp            /* 指向文件对象的指针 */+ FIL* fp   ​/* 指向文件对象的指针 */
 ) )
    
行 456: 行 455:
 <code c> <code c>
 FRESULT f_close (         //​关闭一个文件 FRESULT f_close (         //​关闭一个文件
- FIL* fp            /* 指向要关闭的文件对象的指针 */+ FIL* fp   ​/* 指向要关闭的文件对象的指针 */
 ) )
  
行 462: 行 461:
 <code c> <code c>
 FRESULT f_lseek (         //​移动文件读/​写指针 FRESULT f_lseek (         //​移动文件读/​写指针
- FIL* fp,            /* 指向文件对象的指针 */ + FIL* fp,   ​/* 指向文件对象的指针 */ 
- FSIZE_t ofs       ​/* 指向文件头的指针 */+ FSIZE_t ofs   ​/* 指向文件头的指针 */
 ) )
  
 </​code> ​ </​code> ​
 <code c> <code c>
-FRESULT f_opendir (      //​创建目录对象 +FRESULT f_opendir (           ​//​创建目录对象 
- DIR* dp,       ​/* 指向要创建的目录对象的指针 */ + DIR* dp,       ​/* 指向要创建的目录对象的指针 */ 
- const TCHAR* path       ​/* 指向目录路径的指针 */+ const TCHAR* path     ​/* 指向目录路径的指针 */
 ) )
  
行 476: 行 475:
 <code c> <code c>
 FRESULT f_closedir (      //  关闭目录 FRESULT f_closedir (      //  关闭目录
- DIR *dp             ​/* 指向要关闭的目录对象的指针 */+ DIR *dp   ​/* 指向要关闭的目录对象的指针 */
 ) )
  
 </​code> ​ </​code> ​
 <code c> <code c>
 +FRESULT f_readdir (        //​顺序读取目录条目
 + DIR* dp,    /* 指向打开目录对象的指针 */
 + FILINFO* fno    /* 指向要返回的文件信息的指针 */
 +)
  
 </​code>​ </​code>​
 <code c> <code c>
 +FRESULT f_stat (           //​获取文件状态
 + const TCHAR* path, /* 指向文件路径的指针 */
 + FILINFO* fno    /* 指向要返回的文件信息的指针 */
 +)
  
 </​code>​ </​code>​
 <code c> <code c>
 +FRESULT f_getfree (        //​获取空闲簇数
 + const TCHAR* path, /* 逻辑驱动器号的路径名 */
 + DWORD* nclst,​  ​  /* 指向变量的指针以返回空闲簇的数量*/​
 + FATFS** fatfs  ​  /* 返回指向相应文件系统对象的指针的指针 */
 +)
  
 </​code>​ </​code>​
 <code c> <code c>
 +FRESULT f_truncate (         //​截断文件
 + FIL* fp      /* 指向文件对象的指针 */
 +)
  
 </​code>​ </​code>​
 <code c> <code c>
 +FRESULT f_unlink (           //​删除一个文件或目录
 + const TCHAR* path    /* 指向文件或目录路径的指针 */
 +)
  
 </​code>​  </​code>​
 +<code c>
 +FRESULT f_mkdir (            //​创建一个目录
 + const TCHAR* path    /* 指向目录路径的指针 */
 +)
 +
 +</​code>​
 +<code c>
 +FRESULT f_rename (             //​重命名文件/​目录
 + const TCHAR* path_old, /* 指向要重命名的对象名称的指针 */
 + const TCHAR* path_new ​ /* 指向新名称的指针 */
 +)
 +</​code>​
 ===== 五、 APP实验程序 ===== ===== 五、 APP实验程序 =====
 === 1.主函数 === === 1.主函数 ===
icore4t_50.1585104123.txt.gz · 最后更改: 2020/03/25 10:42 由 zgf