stm32移植到MM32F3277
时间: 2023-08-18 11:04:55 浏览: 61
将STM32代码移植到MM32F3277需要注意以下几点:
1. 寄存器地址:STM32和MM32F3277使用不同的寄存器地址,需要在移植过程中将相关地址进行修改。
2. MCU时钟:MM32F3277的时钟系统与STM32有所不同,需要根据具体情况进行配置。
3. 外设驱动:MM32F3277和STM32的外设设计有差异,需要针对具体外设进行相应调整。
4. 库文件:MM32F3277和STM32使用不同的库文件,需要将STM32的库文件替换为MM32F3277相应的库文件。
5. 中断处理:MM32F3277和STM32的中断处理方式略有差异,需要在移植过程中进行相应调整。
总体来说,移植STM32代码到MM32F3277需要仔细核对寄存器地址、时钟配置、外设驱动、库文件及中断处理等方面的差异,并进行相应的调整。
相关问题
mm32f3277g9p怎么用dap烧录
要使用 DAP 烧录器烧录 MM32F3277G9P,需要按照以下步骤进行操作:
1. 准备好 DAP 烧录器和连接线,将连接线插入烧录器的 JTAG 接口和 MM32F3277G9P 的 JTAG 接口。
2. 打开 DAP 烧录器的软件,选择正确的芯片型号和连接方式。
3. 选择需要烧录的程序文件,并设置好烧录参数,如烧录地址、擦除方式等。
4. 点击“烧录”按钮开始烧录,烧录过程中需要保持连接线的稳定性,不能拔出或松动。
5. 等待烧录完成后,断开连接线,重新上电即可运行程序。
需要注意的是,烧录过程中要仔细检查芯片型号和连接方式是否正确,以及烧录参数是否设置正确,避免烧录失败或烧坏芯片。
MM32F3277G8P的FSMC配置代码,详细解释说明每一行
以下是MM32F3277G8P的FSMC配置代码,注释中对每行代码进行了详细解释说明:
```c
#include "MM32F3277.h"
void FSMC_NAND_Init(void)
{
// 使能FSMC时钟
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
// 定义FSMC_NAND初始化结构体
FSMC_NANDInitTypeDef FSMC_NANDInitStructure;
FSMC_NAND_PCCARDTimingInitTypeDef p;
// 配置FSMC_NAND初始化结构体
p.FSMC_SetupTime = 0x1;
p.FSMC_WaitSetupTime = 0x3;
p.FSMC_HoldSetupTime = 0x2;
p.FSMC_HiZSetupTime = 0x1;
FSMC_NANDInitStructure.FSMC_Bank = FSMC_Bank2_NAND;
FSMC_NANDInitStructure.FSMC_Waitfeature = FSMC_Waitfeature_Disable;
FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
FSMC_NANDInitStructure.FSMC_ECC = FSMC_ECC_Enable;
FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_256Bytes;
FSMC_NANDInitStructure.FSMC_TCLRSetupTime = 0x00;
FSMC_NANDInitStructure.FSMC_TARSetupTime = 0x00;
FSMC_NANDInitStructure.FSMC_CommonSpaceTimingStruct = &p;
FSMC_NANDInitStructure.FSMC_AttributeSpaceTimingStruct = &p;
// 初始化FSMC_NAND
FSMC_NANDInit(&FSMC_NANDInitStructure);
// 使能FSMC_NAND
FSMC_NANDCmd(FSMC_Bank2_NAND, ENABLE);
}
```
解释说明如下:
1. `RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);`:使能FSMC时钟,使得FSMC模块能够正常工作。
2. `FSMC_NANDInitTypeDef FSMC_NANDInitStructure;`:定义FSMC_NAND初始化结构体。
3. `FSMC_NAND_PCCARDTimingInitTypeDef p;`:定义FSMC_NAND_PCCARDTiming初始化结构体。
4. `p.FSMC_SetupTime = 0x1;`:设置NAND芯片的SETUP时间为1个HCLK周期。
5. `p.FSMC_WaitSetupTime = 0x3;`:设置NAND芯片的WAIT时间为3个HCLK周期。
6. `p.FSMC_HoldSetupTime = 0x2;`:设置NAND芯片的HOLD时间为2个HCLK周期。
7. `p.FSMC_HiZSetupTime = 0x1;`:设置NAND芯片的HiZ时间为1个HCLK周期。
8. `FSMC_NANDInitStructure.FSMC_Bank = FSMC_Bank2_NAND;`:设置FSMC_NAND初始化结构体的FSMC_Bank成员为FSMC_Bank2_NAND,表示使用FSMC Bank2来连接NAND Flash。
9. `FSMC_NANDInitStructure.FSMC_Waitfeature = FSMC_Waitfeature_Disable;`:设置FSMC_NAND初始化结构体的FSMC_Waitfeature成员为FSMC_Waitfeature_Disable,表示禁用FSMC的等待特性。
10. `FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;`:设置FSMC_NAND初始化结构体的FSMC_MemoryDataWidth成员为FSMC_MemoryDataWidth_8b,表示使用8位数据总线。
11. `FSMC_NANDInitStructure.FSMC_ECC = FSMC_ECC_Enable;`:设置FSMC_NAND初始化结构体的FSMC_ECC成员为FSMC_ECC_Enable,表示启用ECC校验功能。
12. `FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_256Bytes;`:设置FSMC_NAND初始化结构体的FSMC_ECCPageSize成员为FSMC_ECCPageSize_256Bytes,表示ECC校验的页面大小为256字节。
13. `FSMC_NANDInitStructure.FSMC_TCLRSetupTime = 0x00;`:设置FSMC_NAND初始化结构体的FSMC_TCLRSetupTime成员为0,表示不需要设置CLE到RE的延时。
14. `FSMC_NANDInitStructure.FSMC_TARSetupTime = 0x00;`:设置FSMC_NAND初始化结构体的FSMC_TARSetupTime成员为0,表示不需要设置ALE到RE的延时。
15. `FSMC_NANDInitStructure.FSMC_CommonSpaceTimingStruct = &p;`:设置FSMC_NAND初始化结构体的FSMC_CommonSpaceTimingStruct成员为&p,表示使用前面定义的FSMC_NAND_PCCARDTiming初始化结构体来配置FSMC的时序参数。
16. `FSMC_NANDInitStructure.FSMC_AttributeSpaceTimingStruct = &p;`:设置FSMC_NAND初始化结构体的FSMC_AttributeSpaceTimingStruct成员为&p,表示使用前面定义的FSMC_NAND_PCCARDTiming初始化结构体来配置FSMC的时序参数。
17. `FSMC_NANDInit(&FSMC_NANDInitStructure);`:通过FSMC_NAND初始化结构体来初始化FSMC_NAND。
18. `FSMC_NANDCmd(FSMC_Bank2_NAND, ENABLE);`:使能FSMC Bank2,使得NAND Flash能够正常读写。