S32K144之寄存器工程LED_S32K144

S32K144 NXP原厂提供了很完善的SDK包,几乎涵盖了客户所能用到的全部底层驱动,基于Processer Expert代码生成组件,可以通过GUI配置之后很方便的生成代码。
但是撸寄存器一直是弱项,也一直想找个机会进行锻炼,基于此,原厂也只提供了很少一部分寄存器的底层驱动代码,所以在此当做记录以及督促自己。
玩板子的第一步,点亮LED灯,基于S32 Design Studio for ARM Version 2.2开发环境的工程附上:链接:https://pan.baidu.com/s/1PREbi_cfN70L6gHaDrdw-A 提取码:jw3b

1、时钟配置代码,这个直接用的现成代码

/** clk.c*/
#include "CLK.h"
#include "s32k144.h"void SOSC_init_8MHz(void) {SCG->SOSCDIV=0x00000101;  /* SOSCDIV1 & SOSCDIV2 =1: divide by 1 */SCG->SOSCCFG=0x00000024;  /* Range=2: Medium freq (SOSC betw 1MHz-8MHz)*//* HGO=0:   Config xtal osc for low power *//* EREFS=1: Input is external XTAL */while(SCG->SOSCCSR & SCG_SOSCCSR_LK_MASK); /* Ensure SOSCCSR unlocked */SCG->SOSCCSR=0x00000001;  /* LK=0:          SOSCCSR can be written *//* SOSCCMRE=0:    OSC CLK monitor IRQ if enabled *//* SOSCCM=0:      OSC CLK monitor disabled *//* SOSCERCLKEN=0: Sys OSC 3V ERCLK output clk disabled *//* SOSCLPEN=0:    Sys OSC disabled in VLP modes *//* SOSCSTEN=0:    Sys OSC disabled in Stop modes *//* SOSCEN=1:      Enable oscillator */while(!(SCG->SOSCCSR & SCG_SOSCCSR_SOSCVLD_MASK)); /* Wait for sys OSC clk valid */
}void SPLL_init_160MHz(void) {while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); /* Ensure SPLLCSR unlocked */SCG->SPLLCSR = 0x00000000;  /* SPLLEN=0: SPLL is disabled (default) */SCG->SPLLDIV = 0x00000302;  /* SPLLDIV1 divide by 2; SPLLDIV2 divide by 4 */SCG->SPLLCFG = 0x00180000;  /* PREDIV=0: Divide SOSC_CLK by 0+1=1 *//* MULT=24:  Multiply sys pll by 4+24=40 *//* SPLL_CLK = 8MHz / 1 * 40 / 2 = 160 MHz */while(SCG->SPLLCSR & SCG_SPLLCSR_LK_MASK); /* Ensure SPLLCSR unlocked */SCG->SPLLCSR = 0x00000001; /* LK=0:        SPLLCSR can be written *//* SPLLCMRE=0:  SPLL CLK monitor IRQ if enabled *//* SPLLCM=0:    SPLL CLK monitor disabled *//* SPLLSTEN=0:  SPLL disabled in Stop modes *//* SPLLEN=1:    Enable SPLL */while(!(SCG->SPLLCSR & SCG_SPLLCSR_SPLLVLD_MASK)); /* Wait for SPLL valid */
}void clk_init()
{SCG->RCCR=SCG_RCCR_SCS(6)      /* PLL as clock source*/|SCG_RCCR_DIVCORE(0b01)      /* DIVCORE=1, div. by 2: Core clock = 160/2 MHz = 80 MHz*/|SCG_RCCR_DIVBUS(0b01)       /* DIVBUS=1, div. by 2: bus clock = 40 MHz*/|SCG_RCCR_DIVSLOW(0b10);     /* DIVSLOW=2, div. by 2: SCG slow, flash clock= 26 2/3 MHz*/while (((SCG->CSR & SCG_CSR_SCS_MASK) >> SCG_CSR_SCS_SHIFT ) != 6) {}/* Wait for sys clk src = SPLL */}

2、gpio初始化

/** gpio.c**  Created on: 2020年6月10日*      Author: Administrator*/
#include "s32k144.h"
#include "S32K144_features.h"
#include "gpio.h"void gpio_init()
{PCC->PCCn[PCC_PORTD_INDEX] |= PCC_PCCn_CGC_MASK;PORTD->PCR[PTD0]  =  0x00000100;  /* Port D0: MUX = GPIO */PORTD->PCR[PTD15] =  0x00000100;  /* Port D15: MUX = GPIO */PORTD->PCR[PTD16] =  0x00000100;  /* Port D16: MUX = GPIO */PTD->PDDR |= 1<<PTD0;            /* Port D0:  Data Direction= output */PTD->PDDR |= 1<<PTD15;          /* Port D15: Data Direction= output */PTD->PDDR |= 1<<PTD16;          /* Port D16: Data Direction= output */PTD->PSOR |= 0XFFFFFFFF;
}

3、main函数点灯

/** main.c              Copyright NXP 2016* Description:  Simple program to exercise ADC.* Use potentiometer on board to turn on RGB led* 2016 Jul 16 Osvaldo Romero: Initial version* 2016 Oct 31 SM: Clocks adjusted for 160 MHz SPLL* 2017 Jun 30 SM  Split adcResultInMv into separate global variables*/#include "S32K144.h" /* include peripheral declarations S32K144 */
#include "gpio.h"
#include "CLK.h"uint32_t adcResultInMv_pot = 0;uint32_t adcResultInMv_Vrefsh = 0;void delay(uint32_t i)
{while(i--);
}int main(void)
{SOSC_init_8MHz();      /* Initialize system oscillator for 8 MHz xtal */SPLL_init_160MHz();    /* Initialize SPLL to 160 MHz with 8 MHz SOSC */clk_init();gpio_init();          /* Init  port clocks and gpio outputs */for(;;) {PTD->PCOR |= 1<<PTD0;             /* Port D0:  blue */delay(0xfffff);PTD->PSOR |= 1<<PTD0;PTD->PCOR |= 1<<PTD15;          /* Port D15:  red */delay(0xfffff);PTD->PSOR |= 1<<PTD15;PTD->PCOR |= 1<<PTD16;             /* Port D16:  green */delay(0xfffff);PTD->PSOR |= 1<<PTD16;}
}

在这里需要说明一点,工程中的APP文件夹是我新添加的,如果自己新建工程需要把这个APP编译路径添加进去,不然会报错,添加操作如下:

S32K144之寄存器工程LED_S32K144相关推荐

  1. 【正点原子STM32连载】第六章 新建寄存器版本MDK工程 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  2. STM32全链路开发实战教程专栏总目录(2022.10.19更新)

    文章目录 专栏说明 一.开发环境相关 二.STM32裸机开发 STM32CubeMX系列教程 玩转嵌入式屏幕显示 嵌入式开源小组件的使用 mbedtls开源安全库 DW1000 UWB芯片开发笔记 L ...

  3. MAX31856多类型热电偶温度检测方案芯片详解,附可实现的STM32程序代码

    背景: 热电偶的测温是工业现场常用的测温手段,但是欧洲系列的工控领域中使用的大部分都是J型热电偶,而日本以及台湾等地大部分使用的是K型热电偶.因为日本和台湾的工控产品较早地进入国内,因此国内大部分设备 ...

  4. Mculover666的博客文章导航(嵌入式宝藏站)(2021.06.17更新)

    一.MCU系列 1. 开发环境 [Keil MDK](一)Keil MDK 5.28 的下载.安装.破解 [Keil MDK](二)Keil MDK中芯片器件包的安装 [Keil MDK](三)Kei ...

  5. S32K144(1)新建裸机项目以及烧录调试工程

    目录 1.简介 2.S32DS新建裸机项目 2.1.新建空的项目 2.2.选择标准库的S32DS 2.3.选择使用EWL官方库 2.4.新建成功 3.烧录工程 3.1.点击Debug,选择Debug ...

  6. S32K144学习笔记:3 寄存器映射(Memory Map)

    3.1 介绍 此芯片包含各种存储器和内存映射外围设备,它们位于一个32位的连续内存空间中.本章描述了该内存空间内的内存和外围位置. 有关内存映射的详细信息显示在附加到本文档的电子表格中:s32k1xx ...

  7. STM32F4新建寄存器版本MDK(Keil5)工程(正点原子)

    1. 前期准备 1.1 下载 STM32Cube 固件包 1.1.1 ST官网搜索STM32Cube 首先进入ST官网,在搜索栏输入 STM32Cube 找到 STM32CubeF4 点击进去 在这里 ...

  8. S32DS使用官方SDK建立工程后更改芯片引脚( 以S32K144为例 )

    S32DS 使用官方SDK建立工程后更改芯片引脚( 以S32K144为例 ) 1.新建工程 2.[Window]->[show viwe]->[other],输入[Component Li ...

  9. 计算机组成原理 寄存器实验详解(含工程文件)

    寄存器实验 实验要求 分析 设计 具体实现 (一)验证寄存器写操作 (二)验证寄存器读操作 (三)移位操作 (四)循环移位操作 思考问题 寄存器实验 先放一张 Proteus 总体仿真图,设计过程还是 ...

最新文章

  1. Core Java笔记 2.继承
  2. 手动升级oracle,ORACLE 10.2.0.1手动升级到10.2.0.4
  3. 【Mybatis 之应用篇】2_配置解析、属性名问题、日志、分页和注解开发
  4. 钱包系统推荐维金_区块链持币生息系统开发app,钱包系统搭建
  5. thinkphp memcache mysql_thinkphp中memcache的用法实例
  6. Spark on Yarn 模式编写workcount实例
  7. boost::sort::sample_sort相关的测试程序
  8. JVM调优: 转载JVM调优总结
  9. 前端学习(1968)vue之电商管理系统电商系统之将不同的参数挂载到数据源上
  10. Java重载和重写6_深入理解Java中的重写和重载
  11. CC.Net 全接触系列之二: CCRC.Net : CC.Net 的一种另类使用方式
  12. Ubuntu简单指令和热键的学习
  13. Hibernate_01
  14. 分享《通过开源项目去学习》
  15. php 工业通讯录,PHP 制作通讯录(六)
  16. gif一键抠图 在线_8个免费在线抠图网站 不会PS的小白也能一键抠出专业效果图...
  17. DearMob iPhone Manager for Mac(iPhone手机数据加密传输软件)
  18. Axure RP 9”已损坏,无法打开。 您应该将它移到废纸篓。
  19. 真实评测 rtx3080ti对比rx6800xt选哪个好
  20. Java 9、10、11,谁才是Java程序员的本命?

热门文章

  1. html5画板的使用方法,使用canvas实现画板
  2. 【IDA*】codevs 2495:水叮当的舞步
  3. O037、Rebuild Instance 操作详解
  4. 日本四大摩托车家族历史
  5. [MRCTF2020]Ez_bypass1
  6. html--div+css样式布局(div+span)
  7. Flutter 流式布局组件
  8. Android:仿手机QQ好友动态的ListView
  9. 画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU
  10. xmos_helloworld