国民技术N32G45环境搭建及点灯测试

时间:2022-12-05 11:16:08

国民技术N32G45环境搭建及点灯测试

1.N32G45简介

  N32G45系列集成了最新一代嵌入式ARM Cortex™-M4F处理器,在Cortex™-M3内核的基础上强化了运算能力、新增加了浮点运算处理单元(FPU)、DSP和并行计算指令,提供1.25DMIPS/MHz的优异性能。同时其高效的信号处理能力与Cortex-M系列处理器的低功耗,低成本和易于使用的优点组合,用以满足需要控制和信号处理混合能力且易于使用的应用场景。

  ARM Cortex™-M4F 32位精简指令集处理器具有优异的代码效率,通常采用8位和16位器件的存储器空间即可发挥ARM内核的高性能。

  注:Cortex™-M4F向下兼容Cortex-M3代码。

  • 高达 512KByte 片内 Flash,支持加密存储、多用户分区管理及数据保护,支持硬件 ECC 校验,10万次擦写次数,10 年数据保持。
  • 144KByte 片内 SRAM(包含 16KByte Retention RAM),Retention RAM 支持硬件奇偶校验。

通讯接口   

― 7 个 U(S)ART 接口, 最高速率达 4.5 Mbps,其中 3 个 USART 接口(支持 1xISO7816,1xIrDA, LIN),4 个 UART 接口;

― 3 个 SPI 接口,速度高达 36 MHz,其中 2 个支持 I2S

  ― 1 个 QSPI 接口,速率高达 144 Mbps

  ― 4 个 I2C 接口,速率高达 1 MHz,主从模式可配,从机模式下支持双地址响应

  ― 1 个 USB2.0 Full speed Device 接口

   ― 2 个 CAN 2.0A/B 总线接口

  ― 1 个 SDIO 接口,支持 SD/MMC 格式


  • ADC模拟接口
       ―2 个 12bit 5Msps 高速 ADC,多种精度可配置,6bit 模式下采样率高达 9Msps,多达 18 路外部单端输入通道,支持差分模式
       ―2 个 12bit DAC,采样率 1Msps
       ―支持外部输入独立参考电压源
       ―所有模拟接口支持 1.8~3.6V 全电压工作
  • 最大支持 97 个支持复用功能的 GPIOs,大多数 GPIO 支持 5V 耐压.
  • 2个高速 DMA 控制器,每个控制器支持 8 通道,通道源地址及目的地址任意可配
  • RTC 实时时钟,支持闰年万年历,闹钟事件,周期性唤醒,支持内外部时钟校准
  • 定时计数器

   ―2 个 16bit 高级定时计数器,支持输入捕获、输出比较、PWM 输出以及正交编码输入等功能,最高控制精度 6.9nS。每个定时器有 4 个独立的通道,其中 3 个通道支持 6 路互补 PWM 输出

   ―4 个 16bit 通用定时计数器, 每个定时器有 4 个独立通道,支持输入捕获/输出比较/PWM 输出

   ―2 个 16bit 基础定时计数器

   ―1x 24bit SysTick

   ―1x 7bit 窗口看门狗(WWDG)

   ―1x 12bit 独立看门狗( IWDG)

国民技术N32G45环境搭建及点灯测试

2.N32命名规则

国民技术N32G45环境搭建及点灯测试

3.基于N32G457VEL7开发板介绍

  N32G45XVL-STB 开发板用于国民技术股份有限公司高性能 32 位 N32G45XVL 系列芯片的样片开发。基于ARM架构的Cortex-M4F内核,时钟频率为144MHZ,存储空间flash大小为512KB,运行空间Sram大小为144KB。

  支持串口下载,Jlink下载仿真、USB下载以及CMSIS-DAP下载仿真。板子本身自带CMSIS-DAP接口电路

国民技术N32G45环境搭建及点灯测试

  • 开发板原理图如下

国民技术N32G45环境搭建及点灯测试

4.基于N32G45工程搭建

  1.若想要搭建N32G45开发板工程,则需要下载一份芯片匹配的固件库,相关资料可自行到国名科技官网下载,这里则不展开说明,相关资料包可在文章最后链接获取。

国民技术N32G45环境搭建及点灯测试

  2.双击pack包安装KEIL需要的芯片库,安装成功即可在KEIL下进行开发。

国民技术N32G45环境搭建及点灯测试

  3.创建工程目录,在固件库中拷贝必要的依赖文件到CORE目录下。

国民技术N32G45环境搭建及点灯测试

国民技术N32G45环境搭建及点灯测试

  4.打开KEIL软件,选择新建工程,选择芯片型号为N32G457VEL7。

国民技术N32G45环境搭建及点灯测试

  5.创建分组,将添加的依赖文件加入到分组中。

国民技术N32G45环境搭建及点灯测试

国民技术N32G45环境搭建及点灯测试

  6.添加头文件路径。

国民技术N32G45环境搭建及点灯测试

  7.创建工程入口函数main.c,添加以下代码。

国民技术N32G45环境搭建及点灯测试

#include "n32g45x.h"

int main()
{
while(1);
}

  8.编译工程,查看工程是否创建成功,若提示信息如下则便是工程创建成功。至此,一个新的工程创建到此结束。

国民技术N32G45环境搭建及点灯测试

5.LED驱动

  1.实现LED驱动可分为三个步骤:1.开时钟;2配置GPIO口;3.上下拉。

  • 开时钟

  要开启时钟,我们可以先看下N32G45的系统构架,系统构架框图如下:

国民技术N32G45环境搭建及点灯测试

  根据系统构架框图可以看出,整个内核结构分为三条总线:AHB、APB2、APB1。其中AHB总线时钟频率为144MHZ,APB2上时钟总线为72MHZ、APB1上时钟总线为36MHZ。我们需要完成LED灯的驱动,就时钟找到LED的时钟接口,开启相应的时钟源。

  接下来,我们需要参考开发板原理图,找到LED灯接CPU的那个硬件接口上。LED硬件原理图如下:

国民技术N32G45环境搭建及点灯测试

  根据原理图我们可以看出D1对应的硬件接口为PA8,D2对应的硬件接口为PB4,D3的硬件接口为PB5。因此我们需要开启的时钟为GPIOA和GPIOB。

  相应的时钟接口寄存器如下:

国民技术N32G45环境搭建及点灯测试

  根据用户手册可以看到,PA和PB时钟在PAB2CLKEN的第二位和第三位上,配置如下:

/*1.开时钟*/
RCC->APB2PCLKEN|=1<<2;//PA
RCC->APB2PCLKEN|=1<<3;//PB
  • 配置GPIO口

       对应GPIO端口配置,我们需要参考用户手册的第7章节。第7章节。
  GPIO( General purpose input/output) 即通用型 I/O, AFIO( Alternate-function input/output) 即复用功能 I/O。芯片最多支持 97 个 GPIO,共被分为 7 组(GPIOA/GPIOB/GPIOC/GPIOD/GPIOE/GPIOF/GPIOG),每组 16个端口( F 组共 10 个, G 组共 7 个)。 GPIO 端口和其他的复用外设共用引脚,用户可以根据需求灵活配置。每个 GPIO 引脚都可以独立配置成输出、输入或复用的外设功能端口。除了模拟功能引脚外,其他的 GPIO引脚都有大电流通过能力。
  GPIO 端口可由软件分别配置成以下模式:
   ■ 输入浮空
   ■ 输入上拉
   ■ 输入下拉
   ■ 模拟功能
   ■ 开漏输出
   ■ 推挽输出
   ■ 推挽复用功能
   ■ 开漏复用功能
  对应LED灯,我们需要配置的模式为推挽输出。
  端口模式配置寄存器:

国民技术N32G45环境搭建及点灯测试

  PA8,PB4,PB5配置如下:

/*2.配置GPIO口*/
AFIO->RMP_CFG&=~(0x7<<24);
AFIO->RMP_CFG|=1<<24;//将PB设置为普通IO
GPIOA->PH_CFG&=0xFFFFFFF0;
GPIOA->PH_CFG|=0x00000003;//通用推挽输出模式
GPIOB->PL_CFG&=0xFF00FFFF;
GPIOB->PL_CFG|=0x00330000;//通用推挽输出模式

  注意:由于PB4默认是用于SWD接口,若需要用着普通IO使用,则需要开启AFIO时钟,设置PB4为普通IO。

国民技术N32G45环境搭建及点灯测试

  配置代码如下:

AFIO->RMP_CFG&=~(0x7<<24);
AFIO->RMP_CFG|=1<<24;//将PB4设置为普通IO
  • 上下拉

  上下拉操作,即设置初始化的电平状态。可通过GPIO_POD或者GPIO_PBSC实现。

国民技术N32G45环境搭建及点灯测试

 GPIO_PBSC寄存器如下:

国民技术N32G45环境搭建及点灯测试

  当然,也可以使用位带操作实现。本例程将以位带操作方式实现上下拉,相关资料可参考Cortex-M4权威指南,这里则不展开叙述。实现如下:

/*位带操作的宏定义: Cortex-M3权威指南第五章--96页*/

//把"位带地址+位序号"转换成别名地址的宏
#define BITBAND(addr,bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

//把该地址转成一个指针
#define MEM_ADDR(addr) *((volatile unsigned long *) (addr))

//定义寄存器地址: STM32中文参考手册第2章-存储器映像-28页
#define GPIOA_ODR_ADDR (0x40010800+0x0C)
#define GPIOA_IDR_ADDR (0x40010800+0x08)

#define GPIOB_ODR_ADDR (0x40010C00+0x0C)
#define GPIOB_IDR_ADDR (0x40010C00+0x08)
//定义GPIO口位带操作宏: IDR和ODR
#define PAout(x) MEM_ADDR(BITBAND(GPIOA_ODR_ADDR,x))
#define PAin(x) MEM_ADDR(BITBAND(GPIOA_IDR_ADDR,x))

#define PBout(x) MEM_ADDR(BITBAND(GPIOB_ODR_ADDR,x))
#define PBin(x) MEM_ADDR(BITBAND(GPIOB_IDR_ADDR,x))

#define LED_D1 PAout(8)
#define LED_D2 PBout(4)
#define LED_D3 PBout(5)

  LED整体配置代码如下:

#include "led.h"
/*
LED初始化
硬件接口:D1 --PA8
D2 --PB4
D3 --PB5
作者:IT_阿水
*/
void LED_Init(void)
{
/*1.开时钟*/
RCC->APB2PCLKEN|=1<<2;//PA
RCC->APB2PCLKEN|=1<<3;//PB
RCC->APB2PCLKEN|=1<<0;
/*2.配置GPIO口*/
AFIO->RMP_CFG&=~(0x7<<24);
AFIO->RMP_CFG|=1<<24;//将PB设置为普通IO
GPIOA->PH_CFG&=0xFFFFFFF0;
GPIOA->PH_CFG|=0x00000003;//通用推挽输出模式
GPIOB->PL_CFG&=0xFF00FFFF;
GPIOB->PL_CFG|=0x00330000;//通用推挽输出模式
LED_D1=0;
LED_D2=0;
LED_D3=0;
}

  最后,实现500ms完成LED闪烁一次,代码实现如下:

#include "n32g45x.h"
#include "led.h"
#include "delay.h"
int main()
{
LED_Init();
while(1)
{
LED_D1=!LED_D1;
LED_D2=!LED_D2;
LED_D3=!LED_D3;
Delay_Ms(1000);
}
}
  • 运行效果:

国民技术N32G45环境搭建及点灯测试

国民技术N32G45环境搭建及点灯测试