wordpress网站模板下载失败,关键词简谱,四川省建设规划局官方网站,集团网站群前言目前大形势影响#xff0c;芯片价格日益上涨#xff0c;采购周期变长#xff0c;导致国产芯片替代进口芯片成为大趋势#xff0c;该文章记录了使用国民技术的N32替换STM32的操作流程。话不多说#xff0c;上步骤。一、工程配置1.安装硬件库硬件库为厂家提供的资料芯片价格日益上涨采购周期变长导致国产芯片替代进口芯片成为大趋势该文章记录了使用国民技术的N32替换STM32的操作流程。话不多说上步骤。一、工程配置1.安装硬件库硬件库为厂家提供的资料如下图所示双击安装使得keil能够找到该芯片。2.更改J-Flash配置由于Keil官方没有对该芯片的支持所以J-Link下载时也无法找到该芯片所以需要手动添加芯片。更改步骤官方提供有说明文档。主要步骤是修改JLinkDevices 配置文档添加Nationstech 的下载算法文件添加Nationstech 的JFlash 工程文件添加解锁Nationstech 芯片读保护L1 等级的应用程序进行如上步骤后启动J-Flash就能够扫描并连接到芯片但是有可能keil链接的J-Flash和安装的J-Flash不是一个路径所以将配置好的J-Flash文件替换keil下Keil5\ARM\Segger目录文件就能够正常下载调试。3.更改芯片4.添加驱动文件将N32的底层驱动库拷贝到工程目录下并将include路径添加进去。5.更改全局变量6.将启动文件和驱动文件替换为N32库文件7.将所有的stm32l1xx替换为n32g45x二、底层驱动函数接口对照表更改代码将STM32的驱动函数替换为N32的驱动函数这部分比较繁琐需要慢慢替换下面是我整理的替换对照表。三、踩坑记录经过上面的替换应该可以编译过去了但是这指示开始后面悲剧的踩坑大战才刚刚开始。1.仿真卡死程序仿真卡死单步调试发现卡死在OSInit()函数里面这个函数是OS的初始化函数所以应该是OS配置的问题排查下来发现是启动文件里面的OS启动项没有更改更改如下2.DMA配置出错程序能够进入到任务中后调试发现无法进入到串口接收中断但是示波器中有数据而且中断都没有进入应该是卡死在优先级高的中断中排查发现是DMA发送中断的配置有问题导致一直卡死在DMA中断中。下面是DMA部分的配置。3.Flash配置由于国民芯片和STM32芯片的FLASH划分有区别所以FLASH的替换是比较费事的部分先对比一下两个片子的区别STM32L151的flash部分N32G455芯片的flash部分可以看出STM32单独有EEPROM的划分而N32是没有的只有flash部分。所以要注意两点Flash空间的问题STM32可用空间要比N32的空间大底层接口函数STM32有操作EEPROM的函数而N32没有只能使用flash操作函数。下面是flash部分的操作4.bootloader移植由于本项目采用bootloader引导主程序的方式因此要注意烧写空间的配置配置点在下面位置当单独调试其中的程序时烧写程序需要将整个flash擦除要不运行不正常。5.OS初始化卡死又遇到程序卡死问题这次是主程序而且主程序起始地址为0x8000000时单独运行良好但是改成0x8007000用bootloader跳转过去就卡死也是卡死在OS的初始化中。因为单独运行良好所以排查起来困难些。最终定位是堆栈和堆的空间设置太大了设置小了后就可以运行。更改该空间的位置如下而且问题还不是堆栈的空间不够用是空间设置太大了。有点无语。6.程序跳转后运行不正常这是最后的问题程序能够从bootloader跳转但是运行不正常咨询了厂家技术人员技术人员反馈可以采用分散加载的方式进行排查也就是让芯片直接在主程序烧录的位置启动分散加载的教程网上比较多主要需要设置烧录域和启动域地址还有VTOR寄存器配置如下所示需要编写*.ini文件更改VTORini文件编写如下在keil中加载使得软件启动后先配置单片机配置好后可以实现分散加载能够是程序在烧录位置启动发现程序分散加载可以运行正常但是bootloader跳转不正常因此需要排查跳转部分的问题。最终定位STM32在主程序启动时不会重启向量表而N32会重启向量表在主程序启动位置更改如下跳转部分代码如下————————————————版权声明本文为CSDN博主「德玛西亚吴彦祖」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。原文链接https://blog.csdn.net/zhang421412170/article/details/116779169