0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于N32G45的按键驱动

wang123a 来源:wang123a 作者:wang123a 2022-12-04 10:44 次阅读

1.N32G45简介

N32G45系列集成了最新一代嵌入式ARM Cortex™-M4F处理器,在Cortex™-M3内核的基础上强化了运算能力、新增加了浮点运算处理单元(FPU)、DSP和并行计算指令,提供1.25DMIPS/MHz的优异性能。

同时其高效的信号处理能力与Cortex-M系列处理器的低功耗,低成本和易于使用的优点组合,用以满足需要控制和信号处理混合能力且易于使用的应用场景。

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

2.N32外设功能

高达 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)

poYBAGOLAVeAaSXjAAHoHrxPfOQ149.png#pic_center

3.基于N32G457VEL7开发板介绍

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

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

poYBAGOLAxOAXp4SAA0Ah_8_fng056.png#pic_center

开发板原理图如下

poYBAGOLA6GAYKqcAAMtZEjN65c245.png#pic_center

3.基于N32G45的按键操作

关于N32G45的工程创建可查看帖子: https://bbs.elecfans.com/jishu_2320004_1_1.html

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

接下来,我们先看下按键的硬件接口,原理图如下:

pYYBAGOL7ZCAWCBtAABzZL-XCdY364.png

根据原理图可知,按键的硬件接口为:

S1 ---PA4 S2 ---PA5 S3 ---PA6

有了硬件接口,我们即可按照3步操作即可。

开时钟

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

poYBAGOLSduAMEn_AAF6qh2dl0U833.png#pic_center

根据系统构架框图可以看出,整个内核结构分为三条总线:AHB、APB2、APB1。其中AHB总线时钟频率为144MHZ,APB2上时钟总线为72MHZ、APB1上时钟总线为36MHZ。

根据按键原理图,我们只需要开启PA时钟即可

poYBAGOL7qWAWHMIAADEm4YffRo686.png

/*1.开时钟*/
RCC->APB2PCLKEN|=1<<2;//PA

配置GPIO口

对应GPIO端口配置,我们需要参考用户手册的第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 端口可由软件分别配置成以下模式:

   ■ 输入浮空
   ■ 输入上拉
   ■ 输入下拉
   ■ 模拟功能
   ■ 开漏输出
   ■ 推挽输出
   ■ 推挽复用功能
   ■ 开漏复用功能

对应按键,我们需要配置的模式为推挽输出。

端口模式配置寄存器

poYBAGOLTa2AU2mBAAK2VOXqGa4600.png#pic_center

按键GPIO口配置如下:

  /*配置GPIO口*/
  GPIOA->PL_CFG&=0xF000FFFF;
  GPIOA->PL_CFG|=0x08880000;//上拉/下拉输入模式

注意:由于按键是做检测,判断按键是否按下,所以按键模式配置需要设置为输入模式。

上下拉

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

根据按键硬件原理图,按键按下为低电平,要想正常检测到按键是否按下,则需要产生一个由高电平到低电平的跳变过程,因此按键需要设置为上拉模式。

pYYBAGOLT3aASzz6AAEJCcS1esw841.png#pic_center

  GPIOA->POD|=0x7<<4;//上拉,将PA4~PA6设置为高电平

3.2 按键检测

为方便后续按键使用,我们可以单独封装一个按键检测函数,通过返回值确定哪个按键按下。

/***************检测按键函数*************
**硬件接口:KEY1 --PA0 按下为高电平
**					KEY2 --PA1 按下为低电平
**					KEY3 --PA4按下为低电平
**					KEY4 --PA5按下为低电平
**返回值:KEY1按下 --返回1
**				KEY2按下 --返回2
**				KEY3按下 --返回3
**				KEY4按下 --返回4
**没有按键按下:返回0
**注:该函数一次只能检测一个按键是否按下
**作者:IT_阿水
******************************************/
u8  Key_Scan(void)
{
	static u8 stat=0;//按键按下标志位
	if((!KEY1 || !KEY2 || !KEY3) && (stat==0))//是否有按键按下
	{
		Delay_Ms(20);//延时消抖
		stat=1;//表示有按键按下
		if(KEY1==0)return 1;
		else if(KEY2==0)return 2;
		else if(KEY3==0)return 3;
	}
	else
	{
		if(KEY1 && KEY2 && KEY3 )stat=0;//是否所有按键都松开
	}
	return 0;//没有按键按下
}

注意,上面函数中KEY1、KEY2、KEY3均是通过位带方式实现,具体写法查看帖子:https://bbs.elecfans.com/jishu_2320004_1_1.html

3.3 按键控制LED

通过任意一个按键,实现LED的亮灭。

#include "n32g45x.h"
#include "led.h"
#include "key.h"

#include "delay.h"
int main()
{
  u8 key_val;
  LED_Init();
  KEY_Init();

  while(1)
  {
    key_val=Key_Scan();
    if(key_val)
    {
      LED_D1=!LED_D1;
      LED_D2=!LED_D2;
      LED_D3=!LED_D3;
    }

  }    
}

实现效果如下:

按下按键所有的LED点亮,再按一次按键所有的LED熄灭。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式技术
    +关注

    关注

    10

    文章

    349

    浏览量

    34274
  • 按键驱动
    +关注

    关注

    0

    文章

    11

    浏览量

    7100
  • n32g455
    +关注

    关注

    0

    文章

    7

    浏览量

    879
收藏 人收藏

    评论

    相关推荐

    基于N32G45硬件SPI驱动OLED屏幕#嵌入式开发

    单片机开发板国民技术LED显示屏技术
    IT_阿水
    发布于 :2022年12月06日 12:24:51

    基于N32G45智能家居平台

    智能家居
    IT_阿水
    发布于 :2023年02月25日 18:33:36

    国民技术MCU应用笔记连载(4)——N32G45x系列USB自定义HID设备的实现

    了HID设备的驱动程序,因而无需用户自己开发驱动程序,对于一些数据量较少的场合(例如按键输入、LED显示或一些小容量的芯片烧录器等),使用用户自定义HID设备是很合适的。本文主要介绍N32G4
    发表于 07-05 11:58

    N32G45XRL-STB开发板硬件使用手册

    N32G45XRL-STB 开发板用于国民技术股份有限公司高性能 32 位 N32G45XR 系列芯片的样片开发。本文档详细描述了 N32G45XRL-STB 开发板的功能、使用说明及注意事项。
    发表于 11-01 06:12

    N32G45XML-STB开发板硬件使用手册

    N32G45XML-STB 开发板用于国民技术股份有限公司高性能 32 位 N32G45XM 系列芯片的样片开发。本文档详细描述了 N32G45XML-STB 开发板的功能、使用说明及注意事项。
    发表于 11-02 07:00

    N32G45x/G4FRx/N32WBx系列触控设计指南

    本应用笔记主要针对 N32G45x/G4FRx/N32WBx 系列 MCU 在智能门锁、智能家居等触控产品上提供完整的触控解决方案及典型触控应用的详细说明,为开发者提供技术支持。
    发表于 11-02 06:12

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

    实现LED驱动可分为三个步骤:1.开时钟;2配置GPIO口;3.上下拉。开时钟  要开启时钟,我们可以先看下N32G45的系统构架,系统构架框图如下:  根据系统构架框图可以看出,整个内核结构分为三条
    发表于 12-03 16:34

    【国民技术N32项目移植】基于N32G45的电子钟项目移植

    基于N32G45的电子钟项目移植1.项目简介  本项目主要完RCC时钟、GPIO引脚、USART、DMA协助串口收发、TIM输出PWM控制LED闪烁以实现程序运行指示、硬件SPI驱动0.96寸
    发表于 12-07 21:57

    【精品合集】国民技术N32开源移植挑战赛作品合集

    345XVL-STB项目移植 —开箱+资料【国民技术N32项目移植】MacOS开发N32G45 1、创建开发环境【国民技术N32项目移植】RT-THread 移植 LED闪灯【国民技术N
    发表于 01-10 13:59

    【国民技术N32项目移植】MacOS开发N32G45 1、创建开发环境

    457/Nationstech.N32G45x_DFP.1.0.5.pack ./build/output.bin0000839 I Loading /Users/liujianhua/Downloads
    发表于 01-26 09:15

    【国民技术N32项目移植】项目提交-物联网心率监控设备

    使用中断,减轻复杂性,本项目采用了开发板的KEY1和KEY2这两个按键。IIC应用开源项目RA6M4使用了软件IIC,而N32G45使用了硬件IIC。加快OLED刷新率,显示波形图不会卡顿。LED驱动开源
    发表于 02-12 16:41

    【国民技术N32项目移植】5.项目提交-天气显示及预报系统介绍以及演示

    技术N32G45芯片微处理器,运行RT-Thread操作系统,实现包括系统外设初始化、网络接入、系统管理、数据获取、数据显示等功能。平台层和应用层功能则由服务器和开发板以及显示屏协同实现。系统整体框图
    发表于 02-22 19:53

    N32G45的工程项目如何添加AT组件?

    目前使用的是N32G45的工程项目,需要添加AT组件,然后我根据文档发现没有AT的代码,从rtthread studio新建的项目中把AT文件夹复制过来,在其中使用ENV工具配置,手动将程序全都放进工程中新建的文件夹,编译的时候发现没有,下载了at_device软件版之后不知道怎么配置了。
    发表于 09-07 16:52

    HT45R36在触控滑条式按键中的应用

    HT45R36在触控滑条式按键中的应用以HT45R36 8-Bit MCU 控制滑条触摸式按键面板。HT45R36 滑条触摸式显示控制板包含
    发表于 03-22 22:32 31次下载

    HT45R35在触控按键中的应用(使用C语言)

    HT45R35在触控按键中的应用(使用C语言) HT45R35 Demo Board包含12个Touch Switch,这是一种电容式的非接触式触摸按键,它可以用来取代任何的机械式
    发表于 03-27 09:24 84次下载