目录

  • S32K1XX 系列 keil下新建工程
    • 1、新建6个文件夹
    • 2、新建工程
    • 3、验证工程

S32K1XX 系列 keil下新建工程

1、新建6个文件夹

名称如下:

Project:用于存放工程文件;

HARDWARE:驱动层,用于存放驱动文件,如:GPIO、UART、SPI、I2C、CAN;

DEVICE:设备层,用于存放设备文件,如MU6050、LCD;

MiddleLayer:中间层,用于在应用层和设备层搭建桥梁;

APPLICATION:应用层,存放具体应用程序,呼吸灯;

COMMON:公共文件,存放公用文件;

2、新建工程

2.1、点击Project-> New uVision Project

2.2、选择芯片型号,根据需求选择,本次测试采样S32K116

2.3、勾选 CMSIS下的CORE和Device下的Startup,点击OK

2.4、生成如下工程

2.5、在工程中添加文件夹

2.6、新建main.c文件,并添加到Project下

2.7、编译之后会出现报错

解决如下:


2.8、在C/C++目录下,取消勾选C99 Mode

2.9、再次编译,无警告无报错

3、验证工程

在HARDWARE文件夹下新建:GPIO.c、GPIO.h两个文件

GPIO.c进行GPIO设置

#include "GPIO.h"/* 定义五个指针数组保存 GPIOX 的地址 */
GPIO_MemMapPtr GPIOX[5] = {PTA, PTB, PTC, PTD, PTE}; //定义五个指针数组保存 GPIOX 的地址
PORT_MemMapPtr PORTX[5] = {PORTA, PORTB, PORTC, PORTD, PORTE};void GPIO_PinInit(PTXn_e ptx_n, GPIO_CFG dir, uint8_t data)
{uint8_t ptx, ptn;ptx = PTX(ptx_n);ptn = PTn(ptx_n);/* 使能端口时钟 */PCC->PCCn[PCC_PORTA_INDEX + ptx] = PCC_PCCn_CGC_MASK;/* 清除之前的复用功能 */PORTX[ptx]->PCR[ptn] &= ~(uint32)PORT_PCR_MUX_MASK;/* 设置复用功能为GPIO即普通IO口 */PORTX[ptx]->PCR[ptn] |= PORT_PCR_MUX(1);/* 配置GPIO模式 */PORTX[ptx]->PCR[ptn] |= dir;/* 设置GPIO方向 */if (dir){GPIOX[ptx]->PDDR |= (uint32)(1 << ptn);}else{GPIOX[ptx]->PDDR &= ~(uint32)(1 << ptn);}/* 设置端口默认状态 */if (data){GPIOX[ptx]->PDOR |= (uint32)(1 << ptn);}else{GPIOX[ptx]->PDOR &= ~(uint32)(1 << ptn);}
}void GPIO_PinWrite(PTXn_e ptx_n, uint8_t data)
{uint8_t ptx, ptn;ptx = PTX(ptx_n);ptn = PTn(ptx_n);/* 设置端口默认状态 */if (data){GPIOX[ptx]->PDOR |= (uint32)(1 << ptn);}else{GPIOX[ptx]->PDOR &= ~(uint32)(1 << ptn);}
}

GPIO.h

#ifndef __GPIO_H_
#define __GPIO_H_
#include "common.h"
#include "stdint.h"
#include "S32K116.h"//定义管脚状态
typedef enum GPIO_CFG
{//这里的值不能改!!!GPI         = 0x00,                       //定义管脚输入方向      GPIOx_PDDRn里,0表示输入,1表示输出GPO         = 0x01,                       //定义管脚输出方向GPI_DOWN    = 0x02,                       //输入下拉              PORTx_PCRn需要PE=1,PS=0GPI_UP      = 0x03,                       //输入上拉              PORTx_PCRn需要PE=1,PS=1GPI_PF      = 0x10,                       //输入,带无源滤波器,滤波范围:10 MHz ~ 30 MHz 。不支持高速接口(>=2MHz)  0b10000           Passive Filter EnableGPI_DOWN_PF = GPI_DOWN | GPI_PF,          //输入下拉,带无源滤波器GPI_UP_PF   = GPI_UP   | GPI_PF,          //输入上拉,带无源滤波器GPO_HDS     = 0x41,                       //输出高驱动能力   0b100 0001    High drive strengthGPO_SSR     = 0x05,                       //输出慢变化率     0b101         Slow slew rateGPO_HDS_SSR = GPO_HDS | GPO_SSR,          //输出高驱动能力、慢变化率
} GPIO_CFG;  //最低位为0,肯定是输入;GPI_UP 和 GPI_UP_PF的最低位为1,其他为输出void GPIO_PinInit(PTXn_e ptx_n, GPIO_CFG dir, uint8_t data);
void GPIO_PinWrite(PTXn_e ptx_n, uint8_t data);#endif

新建clocks_and_modes_S32K11x.c和clocks_and_modes_S32K11x.h文件,用于初始化系统时钟;
clocks_and_modes_S32K11x.c

#include "S32K116.h"   /* include peripheral declarations S32K116 */
#include "clocks_and_modes_S32K11x.h"void SOSC_init_40MHz(void)
{/*! SOSC Initialization (40 MHz):* =============================* */SCG->SOSCDIV = SCG_SOSCDIV_SOSCDIV1(1)|SCG_SOSCDIV_SOSCDIV2(1);   /* SOSCDIV1 & SOSCDIV2 =1: divide by 1         */SCG->SOSCCFG  =   SCG_SOSCCFG_RANGE(3)|       /* Range=3: High frequency range selected  */SCG_SOSCCFG_EREFS_MASK;       /* 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 = SCG_SOSCCSR_SOSCEN_MASK;       /* 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 RUN_mode_48MHz (void)
{/*! Fast IRC is enabled and trimmed to 48 MHz in reset (default).* Set FIRCDIV1 & FIRCDIV2 = 1: divide by 1 = 48 MHz.* */SCG->FIRCDIV = SCG_FIRCDIV_FIRCDIV1(1)|SCG_FIRCDIV_FIRCDIV2(1);/*! Fast IRC is enabled in high range (8MHz) in reset (default).* Set FIRCDIV1 & FIRCDIV2 = 1: divide by 1 = 8 MHz.* */SCG->SIRCDIV = SCG_SIRCDIV_SIRCDIV1(1)|SCG_SIRCDIV_SIRCDIV2(1);/*!*  Select FIRC for RUN mode.*  ===========================*/SCG->RCCR=SCG_RCCR_SCS(3)      /* Select FIRC as clock source                              */|SCG_RCCR_DIVCORE(0b00)      /* DIVCORE=0, div. by 1: Core clock = 48 MHz                   */|SCG_RCCR_DIVBUS(0b00)       /* DIVBUS=0, div. by 1: bus clock = 48 MHz                     */|SCG_RCCR_DIVSLOW(0b01);     /* DIVSLOW=1, div. by 2: SCG slow, flash clock= 24 MHz         */while (((SCG->CSR & SCG_CSR_SCS_MASK) >> SCG_CSR_SCS_SHIFT ) != 3) {}   /* Wait for sys clk src = SPLL */
}

clocks_and_modes_S32K11x.h

#ifndef CLOCKS_AND_MODES_S32K11X_H_
#define CLOCKS_AND_MODES_S32K11X_H_void SOSC_init_40MHz (void);
void RUN_mode_48MHz (void);#endif /* CLOCKS_AND_MODES_S32K11X_H_ */

在main函数中对GPIO进行操作,将GPIO -PTB2设置为输出模式,输出高电平。
main.c

#include <stdio.h>
#include "S32K116.h"  /* include peripheral declarations S32K116 */
#include "clocks_and_modes_S32K11x.h"
#include "GPIO.h"//关闭看门狗
void WDOG_disable (void)
{WDOG->CNT=0xD928C520;     /* Unlock watchdog       */WDOG->TOVAL=0x0000FFFF;   /* Maximum timeout value    */WDOG->CS = 0x00002100;    /* Disable watchdog         */
}//void LED_init()
//{//      /*LED--*/
//  PCC->PCCn[PCC_PORTB_INDEX ]|=PCC_PCCn_CGC_MASK; //使能PTD端口时钟
//  PORTB->PCR[2] = PORT_PCR_MUX(1);/* Port : MUX = GPIO               */
//  PTB->PDDR |= 1<<2;                 /* Port: Data direction  */
//  PTB->PSOR |= 1<<2;               /* 高电平*/
    PTA->PCOR |= 1<<2;
//}int main()
{WDOG_disable();SOSC_init_40MHz();  /* Initialize system oscillator for 40 MHz xtal */RUN_mode_48MHz();     /* Init clocks: 48 MHz sys, core and bus, 24 MHz flash. */
//  LED_init();GPIO_PinInit(PTB2,GPO,0);while(1){GPIO_PinWrite(PTB2,1);}return 0;
}

添加.h文件路径

并将S32K116.文件保存在common文件夹下
)

配置Jlink下载环境

选择S32K116

点击如下按钮下载工程。

用万用表或者示波器即可查看PTB2输出高电平。

欢迎各位关注我的公众号:Kevin的学习站,测试例程将会上传到公众号,需要的小伙伴可以下载,整理不易,但您的点赞、关注、收藏就是对我最大的鼓励!

1、S32K1XX 系列 keil下新建工程相关推荐

  1. 浅谈嵌入式MCU软件开发之S32K1xx系列MCU启动过程及重映射代码到RAM中运行方法详解

    内容提要 注:本文摘自NXP工程师胡恩伟的微信公众号"汽车电子expert成长之路",大家感兴趣可以关注一下. 引言 1. S32K1xx系列MCU启动过程详解(startup_S ...

  2. 如何在keil下实现单工程多目标的设置(选择性自动编译)

    最近在研究Cortex-M系列CPU,整了一个工程来进行不同MCU之间的移植测试,其中涉及到Cortex-M0.Cortex-M3.Cortex-M4等多款MCU.于是产生了一个想法,如何在Keil里 ...

  3. 关闭windows hello然后尝试再次运行安装程序_蜂鸟E203系列——Windows下运行hello world例程...

    蜂鸟E203系列--Windows下运行hello world例程​mp.weixin.qq.com 创建 hello world 例程 选择file->new->C / C++ Proj ...

  4. matlab的combuilder系列-matlab下做com组件 zzfrom SMTH bbs

    matlab的combuilder系列-matlab下做com组件 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com ...

  5. caffe学习日记--lesson5: VS下新建工程,探究Blob

    caffe学习日记--lesson5: VS下新建工程,探究Blob 在VS2013下新建工程,探究caffe的数据结构Blob,并使用.熟悉caffe 1.新建空白的控制台应用程序,添加main.c ...

  6. libusb系列-007-Qt下使用libusb1.0.26源码

    libusb系列-007-Qt下使用libusb1.0.26源码 文章目录 libusb系列-007-Qt下使用libusb1.0.26源码 摘要 安装编译环境 确认需要的文件 开始编译 错误1:找不 ...

  7. 关于在KEIL下使用j-link读不到芯片的问题

    硬件设备:正点原子号令者i.MX RT1052开发板 j-link(盗)固件版本:V9.40 实验目的:是使用j-link v9给开发板下载程序 这块RT1052开发板先按照正点原子论坛的方法把kei ...

  8. libusb系列-002-Windows下libusb源码编译

    libusb系列-002-Windows下libusb源码编译 文章目录 libusb系列-002-Windows下libusb源码编译 摘要 Windows下编译libusb库 下载源码 进入msv ...

  9. 关于FRDM-K64F在Keil下的调试

    1.进入Bootloader模式 按住开发板的Reset按键,然后使用USB线连接开发板的 SDAUSB接口到PC.当"我的电脑"出现名称为BOOTLOADER的驱动器后,释放Re ...

最新文章

  1. 黑马程序员_Java解析网络数据流的三种特殊方法
  2. mysql中出现 xC4 xDD_mysql数据库调优总结(二)
  3. 《剑指offer》-- 和为S的连续整数序列、和为S的两个数字、左旋转字符串、翻转单词顺序列
  4. iframe有那些缺点
  5. [ffmpeg] 解码API
  6. 读上瘾-让用户养成习惯
  7. weblogic ejb_使用Oracle WebLogic对应用程序外部的EJB的引用
  8. mysql查看sql代价_mysql 代价
  9. A股开盘:深证区块链50指数跌0.46%,泰豪科技涨停
  10. Unity3D基础21:UI简介
  11. Python是Python的web框架
  12. [游戏开发]iOS 游戏开发教程资源
  13. 一位北美 IT 技术人教你如何破局
  14. python人工智能思想_从零开始学人工智能(1)--Python · 神经网络(零)
  15. 耗时5小时用纯HTML和CSS写成的博学谷
  16. 【C++】struct结构体/构造函数
  17. AdGuard更多规则推荐
  18. Excel调用MD5加密
  19. Redis - 消息发布订阅机制
  20. 如何在Windows资源管理器中自定义文件夹背景和图标

热门文章

  1. SUMO应用工具:DUAROUTER
  2. Muu云课堂V2 v2.5.6
  3. ISE中chipscope的使用教程
  4. python3.6中文版下载-python
  5. JMeter-响应断言
  6. 一副“无限手套”的诞生:548个传感器,人机合一
  7. 招商网站有罪代言明星很冤
  8. 查看此docker网络连接模式_Docker 网络模式(四种)详细介绍
  9. 认证(Authentication),授权(Authorization) 以及Cookie、Session
  10. python类型之frozenset