4180|0

206

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【国民技术车规MCU N32A455开发板】01、搭建开发环境、创建基础工程 [复制链接]

1.开箱

春节前夕,收到了板载国民技术车规MCU的N32A455开发板!一块开发板、一根MiniUSB数据线……

 

2.准备工作

2.1.下载开发资料:

  • 通过ftp://download.nationstech.com下载开发板相关资料:ftp://download.nationstech.com/2-Automotive-Grade MCU/下的N32A455xx_V1.2.0.zip
  • 通过https://www.nationstech.com/zlxz455/官网去下载相应资料,
  • 通过测评活动链接,下载官方提供的资料
  • 额……还是建议到FTP服务器去下载,更新比较及时,官网上当前能下载到版本为1.1版本,FTP服务器最新版本为1.2

2.2.安装KEIL集成开发环境芯片支持包

在N32A455xx_V1.2.0\6-Software Development Kit目录下,双击Nationstech.N32A455_DFP.1.0.0.pack进行安装:

 

3.熟悉板载功能

我们这次测评的开发板型号为N32A455VEL7-EVB,所以对应的是N32A455xx_V1.2.0\5-Hardware Evaulation Board\N32A455VEL7-EVB_V1.1目录下的N32A455VEL7-EVB_V1.1.pdf原理图,通过N32A455VEL7-EVB开发板硬件使用指南,获知开发板功能如下:

  • 开发板供电方式:通过DC插口供12V电源、通过MiniUSB接口供5V电源
  • 板载NSLINK程序下载调试工具,支持JTAG和SWD两种连接方式,同时还带有一路虚拟串口
  • 支持2路CAN和2路LIN
  • 支持TF卡,SDIO接口
  • 板载VS1053B音频电路
  • 板载EEPROM
  • 板载SPI FLASH和QSPI FLASH
  • 板载5个机械按键,1个复位按键、1个唤醒按键、3个功能按键
  • 板载三色LED灯、ADC功能的可调电阻
  • 芯片的所有引脚都通过排针全部引出

 

4.基础工程

官方的示例程序存放在N32A455xx_V1.2.0\6-Software Development Kit\Nationstech.N32A455_Library.1.1.0目录下,firmware文件夹中存放的是驱动库程序,projects\n32a455_EVAL文件夹下存放的是基于开发板的示例程序。我们参考examples\GPIO\LedBlink示例程序、examples\GPIO\LedBlink示例程序、examples\USART\Printf示例程序,来创建一个新的基础工程。

4.1.创建工程:工程名->选择芯片型号->OK

 

4.2.添加工程源码:启动程序、CMSIS、驱动库、用户程序

 

4.3.配置工程

 

4.4.编写程序

#ifndef __MAIN_H__
#define __MAIN_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include <stdio.h>

#include "n32a455.h"

/* PA11_RLED */
#define RLED_RCC    RCC_APB2_PERIPH_GPIOA
#define RLED_GPIO   GPIOA
#define RLED_PIN    GPIO_PIN_11

/* PB10_BLED */
#define BLED_RCC    RCC_APB2_PERIPH_GPIOB
#define BLED_GPIO   GPIOB
#define BLED_PIN    GPIO_PIN_10

/* PA12_GLED */
#define GLED_RCC    RCC_APB2_PERIPH_GPIOA
#define GLED_GPIO   GPIOA
#define GLED_PIN    GPIO_PIN_12

/* PD12_KEY */
#define S3_RCC      RCC_APB2_PERIPH_GPIOD
#define S3_GPIO     GPIOD
#define S3_PIN      GPIO_PIN_12

/* PC6_KEY  */
#define S4_RCC      RCC_APB2_PERIPH_GPIOC
#define S4_GPIO     GPIOC
#define S4_PIN      GPIO_PIN_6

/* PC7_KEY  */
#define S5_RCC      RCC_APB2_PERIPH_GPIOC
#define S5_GPIO     GPIOC
#define S5_PIN      GPIO_PIN_7

#ifdef __cplusplus
}
#endif

#endif

 

#include "main.h"

void LED_Init(void)
{
    GPIO_InitType GPIO_InitStructure;

    RCC_EnableAPB2PeriphClk(RLED_RCC, ENABLE);

    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = RLED_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_InitPeripheral(RLED_GPIO, &GPIO_InitStructure);

    GPIO_WriteBit(RLED_GPIO, RLED_PIN, Bit_SET);

    RCC_EnableAPB2PeriphClk(BLED_RCC, ENABLE);

    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = BLED_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_InitPeripheral(BLED_GPIO, &GPIO_InitStructure);

    GPIO_WriteBit(BLED_GPIO, BLED_PIN, Bit_SET);

    RCC_EnableAPB2PeriphClk(GLED_RCC, ENABLE);

    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = GLED_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
    GPIO_InitPeripheral(GLED_GPIO, &GPIO_InitStructure);

    GPIO_WriteBit(GLED_GPIO, GLED_PIN, Bit_SET);
}

void LED_ON(GPIO_Module *GPIOn, uint16_t PINn)
{
    GPIO_WriteBit(GPIOn, PINn, Bit_RESET);
}

void LED_OFF(GPIO_Module *GPIOn, uint16_t PINn)
{
    GPIO_WriteBit(GPIOn, PINn, Bit_SET);
}

void LED_Toggle(GPIO_Module *GPIOn, uint16_t PINn)
{
    if (GPIO_ReadOutputDataBit(GPIOn, PINn) == Bit_RESET)
    {
        GPIO_WriteBit(GPIOn, PINn, Bit_SET);
    }
    else
    {
        GPIO_WriteBit(GPIOn, PINn, Bit_RESET);
    }
}

void KEY_Init(void)
{
    GPIO_InitType GPIO_InitStructure;

    RCC_EnableAPB2PeriphClk(S3_RCC, ENABLE);

    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = S3_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPU;
    GPIO_InitPeripheral(S3_GPIO, &GPIO_InitStructure);

    RCC_EnableAPB2PeriphClk(S4_RCC, ENABLE);

    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = S4_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPU;
    GPIO_InitPeripheral(S4_GPIO, &GPIO_InitStructure);

    RCC_EnableAPB2PeriphClk(S5_RCC, ENABLE);

    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = S5_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPU;
    GPIO_InitPeripheral(S5_GPIO, &GPIO_InitStructure);
}

void USART_Configuration(void)
{
    GPIO_InitType GPIO_InitStructure;
    USART_InitType USART_InitStructure;

    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_AFIO, ENABLE);

    GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin        = GPIO_PIN_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);

    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_USART1, ENABLE);

    USART_StructInit(&USART_InitStructure);
    USART_InitStructure.BaudRate            = 115200;
    USART_InitStructure.WordLength          = USART_WL_8B;
    USART_InitStructure.StopBits            = USART_STPB_1;
    USART_InitStructure.Parity              = USART_PE_NO;
    USART_InitStructure.Mode                = USART_MODE_TX;
    USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
    USART_Init(USART1, &USART_InitStructure);

    USART_Enable(USART1, ENABLE);
}

int main(void)
{
    LED_Init();

    KEY_Init();

    USART_Configuration();

    printf("\r\nN32A455VEL7-EVB V1.1 %s %s", __DATE__, __TIME__);

    while (1)
    {
        GPIO_WriteBit(RLED_GPIO, RLED_PIN, GPIO_ReadInputDataBit(S3_GPIO, S3_PIN));
        GPIO_WriteBit(BLED_GPIO, BLED_PIN, GPIO_ReadInputDataBit(S4_GPIO, S4_PIN));
        GPIO_WriteBit(GLED_GPIO, GLED_PIN, GPIO_ReadInputDataBit(S5_GPIO, S5_PIN));
    }
}

int fputc(int ch, FILE* f)
{
    USART_SendData(USART1, (uint8_t)ch);
    while (USART_GetFlagStatus(USART1, USART_FLAG_TXDE) == RESET);

    return (ch);
}

 

5.编译、运行

5.1.打印输出

 

5.2.运行视频

15

 

6.附件

N32A455VEL7-EVB V1.1_2024.02.07.zip (444.47 KB, 下载次数: 8)
此帖出自汽车电子论坛
点赞 关注
个人签名We are a team and we work as a team !

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表