mpc5748G开发板学习笔记(一:点灯)

前言

最近公司给了一个恩智浦的MPC5748G开发板,这是一款基于Power Archite技术的32位汽车MCU,好像要几千块,所以抓紧学习一下。

在这里插入图片描述

主控芯片为SPC5748GHMKU6:

在这里插入图片描述

在这里插入图片描述

可对照查看芯片配置。

1、开发环境配置

需要下载S32 DS for Power Architecture,网址在这里:下载地址。这个软件是恩智浦公司专门为其开发板设计的,所以是免费的,下载完还需要安装一个SDK,可以参考https://blog.csdn.net/weifengdq/article/details/103899641的安装步骤。

在这里插入图片描述
开发界面:
在这里插入图片描述

2、硬件连接

首次使用可以参考NXP官网的,网址在这:快速入门

在这里插入图片描述

我用了JTAG线烧程序,12V单独供电,官网的快速入门使用的是USB-micro供电+烧写,但是这种方式可能比较慢而且不太稳定(老师说的),这两种不同的接线方式需要通过跳线选择:

在这里插入图片描述

硬件连接如下:
在这里插入图片描述
在这里插入图片描述

3、编程思路

MPC5748G有8个供用户使用的LED灯,和两个按键,GPIO就非常非常多了,基本J2 J3 J4和J12 J13 J14每一个引脚都可以做GPIO口。

  • 8个LED均为低电平有效,也就是端口输入为0时亮灯:
    在这里插入图片描述

  • 2个按键高电平有效,也就是按下按键时端口输入为1:

在这里插入图片描述

  • GPIO非常多:

在这里插入图片描述

既然要写点灯的程序,不如就把每一个LED和每一个按键都用上,这样也可以记一下端口号,GPIO因为太多,就只挑一个用一下试一试,我用的是PG2,为J4的第一个引脚。

这样的话使用的端口一共有11位,分别是8个LED,2个SW和1个GPIO:
在这里插入图片描述

注:这段代码是后面配置好自动生成的。

具体功能为:按下SW1按键后,LED全亮,PG2置1。按下SW2按键后LED全灭,PG2置0。

4、新建工程

  • 首先打开DS32,新建一个自己的项目:

在这里插入图片描述

  • 然后选择芯片,起个名字:

在这里插入图片描述

  • 选择使用几个内核,我只用了一个,点1、2除反选Z4_2和Z2_2两个核,然后点3添加SDK(就是一个图形化界面配置引脚的工具包):

在这里插入图片描述

在这里插入图片描述

  • 选择MPC5748G_SDK_Z4_0 3.0.0版本(不知道3.0.0和3.0.3有什么区别,后面再了解),点击Finsh开始生成工程。

在这里插入图片描述

  • 工程配置完以后就出现这个界面,可能我调整过了界面的各个模块大家都不太一样,不过文件路径都是一样的,可以在Sources文件夹里看到main文件。

在这里插入图片描述

  • 接下来使用SDK配置11个端口,借一张别人的图参考链接,配置PJ[4]过程如图所示,除PJ4外,还需配置其他7个LED为GPIO输出,PA0 PA10 PA4 PA7 PC4 PH13 PH5:

在这里插入图片描述

  • 两个按键端口为GPIO输入,分别为PA3和PE12,均设置为输入:

在这里插入图片描述

  • 一个GPIO使用了PG2:
    在这里插入图片描述

  • 配置好11个引脚后点击生成代码即可:

在这里插入图片描述

5、主函数编写

  • 刚刚生成代码已经配置好了各个引脚,在pin_mux.c中有个g_pin_mux_InitConfigArr的结构体,里面有每一个引脚的详细配置:

在这里插入图片描述

  • 参数NUM_OF_CONFIGURED_PINS为引脚数量:11。

在这里插入图片描述

  • 需要修改的只有main.c里面的内容,首先在头文件里定义每一个端口号:

在这里插入图片描述

/* User includes (#include below this line is not maintained by Processor Expert) */

#define BTN_PORT        PTA
#define BTN_PIN         3U
#define BTN_PORT0        PTE
#define BTN_PIN0         12U
#define PORT0	PTA
#define LED0 	7
#define PORT1	PTA
#define LED1	10
#define PORT2	PTH
#define LED2	13
#define PORT3	PTC
#define LED3	4
#define PORT4	PTH
#define LED4	5
#define PORT5   PTJ
#define LED5    4U
#define PORT6	PTA
#define LED6 	0
#define PORT7	PTA
#define LED7 	4
#define GPIO_PORT	PTG
#define GPIO_PIN	2
  • main函数内部代码从这里开始写,前三行分别为初始化时钟和引脚:

在这里插入图片描述

  /* Write your code here */
  /* For example: for(;;) { } */
    /* Initialize and configure clocks */
       CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,
                           g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
       CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_FORCIBLE);

       /* Initialize pins */
       PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr);

       while(1) {
       	uint32_t btn_return = (PINS_DRV_ReadPins(BTN_PORT) >> BTN_PIN) & 0x01;//read SW1
       	uint32_t btn_return0 = (PINS_DRV_ReadPins(BTN_PORT0) >> BTN_PIN0) & 0x01;//read SW2
       	if(btn_return == 1) {	//button pressed
       		PINS_DRV_WritePin(PORT0, LED0, 0);
       		PINS_DRV_WritePin(PORT1, LED1, 0);
       		PINS_DRV_WritePin(PORT2, LED2, 0);
       		PINS_DRV_WritePin(PORT3, LED3, 0);
       		PINS_DRV_WritePin(PORT4, LED4, 0);	//led on
       		PINS_DRV_WritePin(PORT5, LED5, 0);
       		PINS_DRV_WritePin(PORT6, LED6, 0);
       		PINS_DRV_WritePin(PORT7, LED7, 0);
       		PINS_DRV_WritePin(GPIO_PORT, GPIO_PIN, 1);	//PG2 1
       	}
       	if(btn_return0 == 1) {
       		PINS_DRV_WritePin(PORT0, LED0, 1);
       		PINS_DRV_WritePin(PORT1, LED1, 1);
       		PINS_DRV_WritePin(PORT2, LED2, 1);
       		PINS_DRV_WritePin(PORT3, LED3, 1);
       		PINS_DRV_WritePin(PORT4, LED4, 1);	//led off
       		PINS_DRV_WritePin(PORT5, LED5, 1);
       		PINS_DRV_WritePin(PORT6, LED6, 1);
       		PINS_DRV_WritePin(PORT7, LED7, 1);
       		PINS_DRV_WritePin(GPIO_PORT, GPIO_PIN, 0); //PG2 0
       	}
       }


6、调试编译

  • 点击左上角小锤子,选择Debug_RAM:

在这里插入图片描述

  • 等待编译完成:

在这里插入图片描述

  • 点Debug右边的三角,选择Debug Configurations…

在这里插入图片描述

  • 开始烧写:

在这里插入图片描述

  • 点击运行:

在这里插入图片描述

  • 此时,按下右下角的SW1(虽然标的是SW4),八个LED灯全部亮起,使用万用表测一下PG2端口,显示为3.3V。

在这里插入图片描述

  • 按下右上角的SW2按键,八个LED全部灭掉,PG2端口为0V。

在这里插入图片描述

7、单步运行

  • 双击这里可以在程序的某一行打个断点,

在这里插入图片描述

  • 点击1运行后程序直接卡在while的第一句这里,点击2即可单步运行,右侧区域可以看到变量的值。

在这里插入图片描述

  • 如果在这一段运行前按住SW2按键。
       	uint32_t btn_return0 = (PINS_DRV_ReadPins(BTN_PORT0) >> BTN_PIN0) & 0x01;//read SW2

然后一直点击单步运行,即可看到LED灯一个一个灭掉。

参考:https://blog.csdn.net/weifengdq/article/details/103916550

MPC5748G用户手册以及接口可以在NXP官网找到,需要注册账号,此文用到的文档已上传CSDN:用户手册
代码已上传github:
https://github.com/aprilaaa/MPC5748Gworkspace/tree/main

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CC2540是一款蓝牙低功耗芯片,可以用来实现蓝牙设备的开发。在进行开发之前,需要先了解CC2540开发板的使用方法。 首先,我们需要准备一个CC2540开发板,如下图所示: ![CC2540开发板](https://img-blog.csdn.net/20180416113413996?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 接下来,我们将通过点亮LED来进行简单的实验。 首先,我们需要连接开发板和电脑,如下图所示: ![连接开发板和电脑](https://img-blog.csdn.net/20180416113643557?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 然后,我们需要安装CC2540开发环境。可以通过以下网址下载并安装:https://www.ti.com/tool/CCSTUDIO。 在安装完成后,打开CCS,点击File -> New -> CCS Project,如下图所示: ![新建CCS Project](https://img-blog.csdn.net/20180416114258105?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 然后,选择CC2540,如下图所示: ![选择CC2540](https://img-blog.csdn.net/20180416114402654?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 接下来,填写项目名称和路径,如下图所示: ![填写项目名称和路径](https://img-blog.csdn.net/20180416114500558?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 然后,选择SimpleBLEPeripheral,并设置为Debug状态,如下图所示: ![选择SimpleBLEPeripheral](https://img-blog.csdn.net/20180416114647467?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 在完成以上步骤后,我们就可以开始进行编程了。 首先,打开SimpleBLEPeripheral.c文件,并在main函数中添加以下代码: ``` // P1.0口输出高电平,点亮LED P1DIR |= BIT0; P1OUT |= BIT0; ``` 然后,点击Project -> Build Project进行编译,在编译完成后,点击Debug -> Debug Active Project进行调试。 最后,我们就可以看到LED点亮了!如下图所示: ![LED点亮](https://img-blog.csdn.net/20180416115558662?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3JhaW5ib3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 以上就是CC2540开发板学习笔记的第一篇,希望对大家有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aprilaaaaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值