【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

在国内市场上,stm32是谜一样的存在。工控领域,除了51单片机,大概就是stm32的应用最广。其实不管是在消费类玩具电子,还是工业生产、物联网,stm32都有它的一席之地。近年来,随着m7的发布,现在stm32的最高频率甚至可以达到600M,这个频率基本上可以运行uclinux了,不再是传统意义上的单片机了。最近花了一些时间学习m7,由于意法半导体出的m7芯片比较晚,之前大家学的比较多的还是nxp公司的rt1052系列,所以我也不例外。但是stm32f系列和rt系列差不多,掌握一个,另外一个学习也不难。

1、开发板

关于m7的开发板,可以选用野火或者是正点原子。

2、软件开发环境

一般都选用MDK开发。

3、连接方法

电源线连接开发板电源,usb线作为串口打印,还有就是jtag、作为版本烧录或者调试使用,

4、地址分布

地址分布是学习soc很重要的一个方面,但是好像很多朋友都不是太注意

0x0~0x20000, 0x20000000~0x20060000,内部ram空间

0x80000000~ sdram空间

0x60000000~ spiflash 映射的空间,即能被cpu直接访问的空间

其他外设空间,比如GPIO1是0x401B8000

5、关键的几个配置文件

FLM文件,只有选择合适的FLM文件,jtag才能将代码下载到norflash当中

ini文件,jtag加载程序的时候需要执行的文件,比如文件中的_loadDcdcTrim就是用来进行dcdc电压设置的

scf文件,keil使用的链接脚本,类似于gcc下面的ld文件

6、KEIL工程中重要的代码文件

fire_imxrt1052_sdram_ini_dcd.c,sdram初始化文件

fire_imxrt1052_spiflash_config.c,spi flash初始化文件,告诉soc如何用线性方式读取指令

fire_flexspi_nor_boot.c,配置文件,包含了上述两个文件的一些地址信息

当然startup_MIMXRT1052.s和main.c也比较重要,但是它们的逻辑简单,应该一下子就学会了。

7、KEIL常用的一些选项

DOWNLOAD(F8),烧录按钮

START/STOP DEBUG(ctrl + F5),调试按钮

Options for taget,工程属性设置按钮

8、CMSIS包

现在MCU的开发方式最好依赖于API进行开发,CMSIS就是其中一种。这样在换不同厂家的mcu时,代价也小一点。当然,如果大家还是对硬件很感兴趣,可以调试的时候单步执行下去,效果是一样的,问题不是很大。

比如说,如果有一个最简单的gpio操作,一般是这么安排的,首先选择pin、设定pin属性,最后设置gpio属性,这样就可以完成一个基本的gpio操作。我们可以引用一下野火的代码来说明这个问题,

/**
* @brief  初始化LED相关IOMUXC的MUX复用配置
* @param  无
* @retval 无
*/
static void LED_IOMUXC_MUX_Config(void)
{/* 核心板的LED灯 */    /* 设置引脚的复用模式为GPIO,不使用SION功能 */IOMUXC_SetPinMux(CORE_BOARD_LED_IOMUXC, 0U);/* RGB LED灯,使用同样的IOMUXC MUX配置 */  IOMUXC_SetPinMux(RGB_RED_LED_IOMUXC, 0U); IOMUXC_SetPinMux(RGB_BLUE_LED_IOMUXC, 0U);  IOMUXC_SetPinMux(RGB_GREEN_LED_IOMUXC, 0U);
}/**
* @brief  初始化LED相关IOMUXC的MUX复用配置
* @param  无
* @retval 无
*/
static void LED_IOMUXC_PAD_Config(void)
{/* 核心板的LED灯 */    IOMUXC_SetPinConfig(CORE_BOARD_LED_IOMUXC, LED_PAD_CONFIG_DATA);  /* RGB LED灯,使用同样的IOMUXC PAD配置 */ IOMUXC_SetPinConfig(RGB_RED_LED_IOMUXC, LED_PAD_CONFIG_DATA); IOMUXC_SetPinConfig(RGB_GREEN_LED_IOMUXC, LED_PAD_CONFIG_DATA); IOMUXC_SetPinConfig(RGB_BLUE_LED_IOMUXC, LED_PAD_CONFIG_DATA);
}/*** @brief  初始化LED相关的GPIO模式* @param  无* @retval 无*/
static void LED_GPIO_Mode_Config(void)
{     /* 定义gpio初始化配置结构体 */gpio_pin_config_t led_config;      /** 核心板的LED灯,GPIO配置 **/       led_config.direction = kGPIO_DigitalOutput; //输出模式led_config.outputLogic =  1;                //默认高电平led_config.interruptMode = kGPIO_NoIntmode; //不使用中断/* 初始化 LED GPIO. */GPIO_PinInit(CORE_BOARD_LED_GPIO, CORE_BOARD_LED_GPIO_PIN, &led_config);/* 使用同样的LED config配置RGB LED灯 */GPIO_PinInit(RGB_RED_LED_GPIO, RGB_RED_LED_GPIO_PIN, &led_config);GPIO_PinInit(RGB_GREEN_LED_GPIO, RGB_GREEN_LED_GPIO_PIN, &led_config);GPIO_PinInit(RGB_BLUE_LED_GPIO, RGB_BLUE_LED_GPIO_PIN, &led_config);
}/*** @brief  初始化控制LED的IO* @param  无* @retval 无*/
void LED_GPIO_Config(void)
{/* 初始化GPIO复用、属性、模式 */LED_IOMUXC_MUX_Config();LED_IOMUXC_PAD_Config();LED_GPIO_Mode_Config();
}

9、MCU支持的外设

目前rt soc支持GPIO、UART、IIC、CAN、Norflash、NAND flash、SD、Ethernet、Camera等很多设备,基本上除了视频、音频、3d、编解码之外,MCU可以完成你需要的任何功能。

10、更多的第三方包

除了CMSIS,我们还可以在野火的开发包里面看到很多的中间件,比如rtos、fatfs、usb、sd、lwip、emwin等等,大家可以根据自己的需要灵活使用。当然这么高的cpu频率,使用时多做一些复杂的算法计算,效果应该还是不错的。

随想录(学习nxp rt1052 soc)相关推荐

  1. NXP RT1052 eFlexPWM—灵活的增强型 PWM例程

    参考IMX+RT开发实战指南 eFlexPWM 初始化结构体详解 结构体成员用于设置PWM 基本工作参数,并由 FLEXPWM 初始化配置函数调用,初始化结构体中设定的参数将会设置定时器相应的寄存器, ...

  2. 【SoC FPGA学习】一、AC501-SOC FPGA开发板介绍

       少一些功利主义的追求,多一些不为什么的坚持. [SoC FPGA开发常见问题合集]SoC FPGA开发过程中常见问题   本系列学习笔记基于小梅哥SOC Cyclone V SoC开发板. 一. ...

  3. 简谈:如何学习FPGA

    一.入门首先要掌握HDL(HDL=verilog+VHDL).   第一句话是:还没学数电的先学数电.然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL.因为verilog太像 ...

  4. 代码随想录Day04 | LeetCode24. 两两交换链表中的节点、LeetCode19. 删除链表的倒数第N个节点、LeetCode160. 链表相交、LeetCode142. 环形链表Ⅱ

    LeetCode24. 两两交换链表中的节点 力扣题目链接 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 ...

  5. 代码随想录Day01 | LeetCode704.二分查找、LeetCode27.移除元素

    数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合. 数组可以方便的通过下标索引的方式获取到下标下对应的数据 需要两点注意的是 数组下标都是从0开始的. 数组内存空间的地址是连续的 正是因为 ...

  6. NXP iMX8 Ubuntu 系统移植及 ROS 应用

    By Toradex 胡珊逢 1). 简介 NXP iMX8 是NXP近期发布的基于Cortex-A72.Cortex-A53等性能非常强大的的ARM处理器, 默认 BSP 是基于 Yocto 工程编 ...

  7. 零基础入门FPGA,如何学习?

     问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导. 如果想速成,那就上网看视频吧,这样主要是面 ...

  8. nvdla学习笔记_神经网络加速器NVDLA顶层接口与工作流程

    Nvidia的开源神经网络加速器NVDLA已经在GitHub上面存在两个多月的时间了,而距离软件Software Stack的开源也差不多提上了日程.近期,NVDLA的代码库中已经更新了System ...

  9. 基于NXP iMX7 ARM处理器部署FreeRTOS实时操作系统

    1). 简介 FreeRTOS是广泛使用的开源实时操作系统, 被众多芯片厂商包括NXP所支持, 本文就展示在NXP iMX7 ARM处理器上面的M4核心上面部署FreeRTOS. NXP iMX7 A ...

最新文章

  1. 在SolidWorks 3D CAD中构建乐高直升机
  2. linux下怎么修改mysql的字符集编码
  3. 使用jdk 自带的jarsigner 签名工具签名的apk 和android规范有区别
  4. python snmp采集交换机信息_Python采集12星座信息,分析出12星座的各个特点
  5. Stanford Parser的学习之开篇(一)
  6. jdbc教程_JDBC教程
  7. SpringCloud + RocketMQ实现可靠消息最终一致性事务
  8. tcp流式传输_收听互联网广播以及下载和流式传输免费音乐的最佳网站
  9. jasperreport报表导出excel锁定行和列
  10. HACCP的相关文献包含哪些?
  11. 关于制作Unity动画的时候出现的问题:
  12. 数据压缩——LZW 编解码算法实现与分析
  13. 这样的钓鱼邮件,你会中招吗?
  14. mysql_assoc什么意思_MYSQL_ASSOC?
  15. 网信耕耘十余载,金融安全3.0时代的缔造者
  16. MySql零基础教学,超细致,从小白到精通
  17. QA与QC质量管理对比
  18. python 逻辑运算符_Python关系和逻辑运算符
  19. unity3D更换编辑器版本脚本无法识别MonoBehaviour和unityengine解决方法
  20. RPC304A POE系统四通道PSE控制芯片,POE Controller,PSE Controller ,主要PIN IP804/IP808,TPS28361等芯片

热门文章

  1. Oracle 11gR2 RAC 安装Grid Infrastructure错误
  2. 病毒及攻击防御手册之八
  3. Django+ PowerShell 管理AD系统
  4. Python 打开目录与指定文件
  5. 面试题解析:1 Java中switch语句可以作用在enum上的测试
  6. HttpModule httpHandle 执行顺序
  7. 不容易,今天的成果。
  8. Redis面试题及分布式集群
  9. gitlab+jenkins=自动化构建
  10. null 和{}的那点事