S32K144之寄存器工程LED_S32K144
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相关推荐
- 【正点原子STM32连载】第六章 新建寄存器版本MDK工程 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...
- STM32全链路开发实战教程专栏总目录(2022.10.19更新)
文章目录 专栏说明 一.开发环境相关 二.STM32裸机开发 STM32CubeMX系列教程 玩转嵌入式屏幕显示 嵌入式开源小组件的使用 mbedtls开源安全库 DW1000 UWB芯片开发笔记 L ...
- MAX31856多类型热电偶温度检测方案芯片详解,附可实现的STM32程序代码
背景: 热电偶的测温是工业现场常用的测温手段,但是欧洲系列的工控领域中使用的大部分都是J型热电偶,而日本以及台湾等地大部分使用的是K型热电偶.因为日本和台湾的工控产品较早地进入国内,因此国内大部分设备 ...
- Mculover666的博客文章导航(嵌入式宝藏站)(2021.06.17更新)
一.MCU系列 1. 开发环境 [Keil MDK](一)Keil MDK 5.28 的下载.安装.破解 [Keil MDK](二)Keil MDK中芯片器件包的安装 [Keil MDK](三)Kei ...
- S32K144(1)新建裸机项目以及烧录调试工程
目录 1.简介 2.S32DS新建裸机项目 2.1.新建空的项目 2.2.选择标准库的S32DS 2.3.选择使用EWL官方库 2.4.新建成功 3.烧录工程 3.1.点击Debug,选择Debug ...
- S32K144学习笔记:3 寄存器映射(Memory Map)
3.1 介绍 此芯片包含各种存储器和内存映射外围设备,它们位于一个32位的连续内存空间中.本章描述了该内存空间内的内存和外围位置. 有关内存映射的详细信息显示在附加到本文档的电子表格中:s32k1xx ...
- STM32F4新建寄存器版本MDK(Keil5)工程(正点原子)
1. 前期准备 1.1 下载 STM32Cube 固件包 1.1.1 ST官网搜索STM32Cube 首先进入ST官网,在搜索栏输入 STM32Cube 找到 STM32CubeF4 点击进去 在这里 ...
- S32DS使用官方SDK建立工程后更改芯片引脚( 以S32K144为例 )
S32DS 使用官方SDK建立工程后更改芯片引脚( 以S32K144为例 ) 1.新建工程 2.[Window]->[show viwe]->[other],输入[Component Li ...
- 计算机组成原理 寄存器实验详解(含工程文件)
寄存器实验 实验要求 分析 设计 具体实现 (一)验证寄存器写操作 (二)验证寄存器读操作 (三)移位操作 (四)循环移位操作 思考问题 寄存器实验 先放一张 Proteus 总体仿真图,设计过程还是 ...
最新文章
- Core Java笔记 2.继承
- 手动升级oracle,ORACLE 10.2.0.1手动升级到10.2.0.4
- 【Mybatis 之应用篇】2_配置解析、属性名问题、日志、分页和注解开发
- 钱包系统推荐维金_区块链持币生息系统开发app,钱包系统搭建
- thinkphp memcache mysql_thinkphp中memcache的用法实例
- Spark on Yarn 模式编写workcount实例
- boost::sort::sample_sort相关的测试程序
- JVM调优: 转载JVM调优总结
- 前端学习(1968)vue之电商管理系统电商系统之将不同的参数挂载到数据源上
- Java重载和重写6_深入理解Java中的重写和重载
- CC.Net 全接触系列之二: CCRC.Net : CC.Net 的一种另类使用方式
- Ubuntu简单指令和热键的学习
- Hibernate_01
- 分享《通过开源项目去学习》
- php 工业通讯录,PHP 制作通讯录(六)
- gif一键抠图 在线_8个免费在线抠图网站 不会PS的小白也能一键抠出专业效果图...
- DearMob iPhone Manager for Mac(iPhone手机数据加密传输软件)
- Axure RP 9”已损坏,无法打开。 您应该将它移到废纸篓。
- 真实评测 rtx3080ti对比rx6800xt选哪个好
- Java 9、10、11,谁才是Java程序员的本命?
热门文章
- html5画板的使用方法,使用canvas实现画板
- 【IDA*】codevs 2495:水叮当的舞步
- O037、Rebuild Instance 操作详解
- 日本四大摩托车家族历史
- [MRCTF2020]Ez_bypass1
- html--div+css样式布局(div+span)
- Flutter 流式布局组件
- Android:仿手机QQ好友动态的ListView
- 画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU
- xmos_helloworld