本帖最后由 tobot 于 2022-2-6 01:02 编辑
#申请开发板# #申请原创#@21小跑堂
【N32G457】点灯实验第一天 报名参加国民技术MCU与RT-Thread设计大赛,收到了N32G45XVL-STB板卡一块,照片就不晒了。这块板卡USB使用复古的miniUSB接口,不过很贴心的送了一根线。从板上可以比较明确看到所用芯片为国民技术N32G457 VEL7,根据国民技术的官网(https://www.nationstech.com/N32G457/)只有非常简单的说明。 官网上的相关资料不多,从二姨家的《国民技术MCU论坛》板块上找到百度网盘地址 链接:https://pan.baidu.com/s/1PMxh7BfuLjilf9MtZ0Nn_w 提取码:9xka 下载查看,有MCU型号的详细介绍 可以看到,它是互联网型的ARM Cortex-M4核的MCU,有512kB Flash,100脚的LQFP封装。 虽然年前已经收到这块板子,但过年七天休假,直到今天才正式开始试用。RT-Thread Studio的安装非常简单,基本就是按照向导执行“下一步”即可。 运行程序,选择新建项目, 填写工程名称,选择基于开发板,添加对应板卡 可以选择 点击“完成”,则开始创建工程。
工程中, drv_gpio.c文件中定义pin脚数量应与所用MCU相对应,应该改为100。 在main.c函数中,指明用于点灯的PB5在该文件中也有定义: 原始值57对应的是D10,显然不能使用,可以根据实际情况修改为91。 当然我们也可以根据测试需要修改为其它值,比如D1作为LED1,那么找到对应的A8(67)。 将这个值修改后,保存并编译(ctrl-b)。 将板卡的J4(DEBUG)连接到电脑上,驱动会自动安装。 点击下载程序按钮(ctrl-alt-d)将刚编译好的程序下载到板上。 可以看到D3在以0.4秒为周期闪光,但比较奇怪的是,D2也会发光。 稍作修改: 重新编译下载,可以看到D1(红)和D3(绿)都是同频率闪烁,但D2(蓝)依然常亮,推测D2(PB4)被其它任务所使用。 点灯自然还需要试试PWM,所谓PWM(Pulse Width Modulation , 脉冲宽度调制)是一种数字编码,输出端为一系列幅值相等的脉冲,通过改变脉冲方波的占空比,实现led的亮度调节。PWM调节亮度并不是持续发光的,而是在不停地点亮、熄灭,改变时每种状态的持续时间比人的视觉残留(0.1s左右)更短,肉眼的感知就是灯泡一直在亮,但单位时间内,发光的时间越长,熄灭的时间就相应减少,给人的感觉就是灯越亮;反之,灭的状态持续时间越长,肉眼看到灯的亮度就越低。 根据这个原理我们可以尝试做一个呼吸灯,我们这里暂时不用板卡上自带的pwm通道,而是使用rt_hw_us_delay函数作为点灯的延迟计数,drv_common.c上过有这个微秒函数的实现,理论上可以实现0~2^32-1微秒延时。 首先是引入drv_common.h头文件 #include <drv_common.h> 定义控制脚PB5,事实上,在板上看得并不清楚,但使用外置的LED则很明显有亮度变化 #define LED_PIN_NUM 91 接下来重新写一遍main函数。 下一篇我们准备调用drv_pwm.c函数实现同样效果,敬请期待。
|