Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
IAR
国民技术_N32G45x
RT-Thread Nano
[N32G457]开箱及IAR环境RTT-Nano配置
发布于 2022-03-03 13:44:50 浏览:1390
订阅该版
[tocm] ## 开发流水 - 2022/01/05 报名参加 - 2022/01/07 审核通过 - 2022/01/13 收到物流 - 2022/03/02 开始开发 ## 项目信息 ### 开发板信息 #### MCU - N32G457VE - Cortex-M4F 144MHz Max - Up to 512KB Flash,Up to 144KB SRAM #### 开发板详情 > 吐槽:官方的手册居然和板子对不上,`5-硬件评估板(Hardware Evaulation Board)\N32G45XVL-STB V1.1(LQFP100)`里面的文档和原理图对不上... > > - 通用按键S1,S2没有文中描述的预留机械触控按键焊盘 > - J9和J10是Boot0和Boot1更是胡扯 > - GPIO口是J1.J2.~~J12~~J9 > - LED限流电阻有点小,导致有点耀眼 > - 多个封装混用,感觉没必要. > > 还要吐槽的就是拼版拼的有点划手.然后不理解为啥底面要贴件,正面还是很空的. - J1/J2/J9是GPIO排针. - J16/J14是模拟电源焊盘 - 按键有S7复位按键,S6(PA0)唤醒按键,PA0还接在J7上.三个通用按键S1(PA4)S2(PA5)S3(PA6),均是下拉,使用时GPIO需要上拉输入. - 三个用户LED,D1(PA8),D2(PB4),D3(PB5).均是共阴解法,使用时GPIO输出高电平LED点亮. - 一个电源灯D4,用于指示AMS1117后3V3状态,在J15和J8前面. - 用户USB接口J3,连接MCU的USB,其中ID线悬空,VBUS分压后通过J7给PA0. - J7用于连接J3USB的Vbus和PA0. - J6用于连接J3和J4两个USB的VBUS到AMS1117输入.断开时整板无供电. - J8和J15,分别将AMS1117产生的3V3给调试器和MCU. - J5是连接调试器和MCU的桥梁.需要注意其上的3V3两个都是调试器的3V3,在断开J8/J15时需要注意. - J10是调试器的调试口 - J12是调试器的Boot0. - D7和D6分别是调试器的运行指示和连接指示灯 #### 开发板修改 由于项目仅需要一个串口因此没啥较大的改动. - 用砂纸打磨PCB边缘 - 给MCU和调试器的Boot0设置低电平 如果有第三方调试器比如JLink的话,可以断开J5上全部排针,连接字符一侧的接口,其中3V3最好连接J1/J2的(如果不动J8/J15的话不用管).这样我们就有两块MCU了,一片N32G457VE和一片N32G455CC,虽然就引出一个USB接口两个LED,6个GPIO其中有串口(其中PB14和PB12连在一起),也还是挺丰富的,芯片资源上频率/ROM/RAM都和457一致,很是够用. ## 开发笔记 ### 工程构建 #### BSP目录 | Name | Note | | ---------------------------------------- | --------------- | | 1-产品简介(Product Brief) | 了解 | | 2-数据手册(Datasheet) | 重要 | | 3-用户手册(UserManual) | 重要 | | 4-勘误手册(Errata sheet) | 空的 | | 5-硬件评估板(Hardware Evaulation Board) | 重要,原理图 | | 6-原理图_PCB库文件(SCH_PCB Liabrary) | 了解,封装 | | 7-软件开发套件(Software Development Kit) | 重要 | | 8-应用笔记(Application Note) | 了解 | | 9-使用指南(User Guide) | 了解 | | 10-工具(Tools) | 了解,调试器驱动 | | 11-测试报告(Test Report) | 了解 | #### 驱动安装 **调试器:** - 若使用板载DapLink的话,需要安装下`/10-工具(Tools)`目录内驱动. - 若使用JLink需要安装`7-软件开发套件(Software Development Kit)`内`jlink工具添加Nationstech芯片V1.0.6` **IDE:** - 若使用KeilMDK,需要安装`7-软件开发套件(Software Development Kit)`内`Nationstech.N32G45x_DFP.1.0.4.pack` - 若使用IAR需要安装`7-软件开发套件(Software Development Kit)`内`Nations Device PACK Add To IAR Tool V1.1.7` - 若使用GCC系需要参考`8-应用笔记(Application Note)`内`AN_N32G45x_N32G4FR_N32WB452_GCC开发环境应用笔记_V1.0` **Lib:** - 若使用TSC触控算法则应使用`/NATIONS-TSCSDK_V1.04`及参考`UG_N32G45x_G4FRx_N32WBx系列TSC触控SDK使用指南V1.22` - 若使用加密库应添加bsp中lib文件及参考`UG_国民技术MCU通用密码算法库使用指南V1.0` #### 工程目录 1. 拷贝`7-软件开发套件(Software Development Kit)\Nationstech.N32G45x_Library.2.0.0\Nationstech.N32G45x_Library.2.0.0\firmware`内的`/CMSIS`和`/n32g45x_std_periph_driver`目录至`/Drivers` 2. 拷贝`RT-Thread-Nano`内文件至`/rt-thread`,需要删除`/bsp`目录等无用文件. 3. 拷贝`n32g45x_it`文件至`/Core`(it文件入口函数都一样,所以用其他芯片的也可以). 4. 修改`main.h`文件`#include "n32g45x.h"` #### 裸机工程 - 添加相关文件至IDE,选择芯片型号.这里不赘述 - 增加全局宏定义`USE_STDPERIPH_DRIVER`和`N32G45X` - 增加应用目录 - `Drivers/CMSIS/core` - `Drivers/CMSIS/device` - `Drivers/n32g45x_std_periph_driver/inc` - 添加`system_n32g45x.c`和`startup_n32g45x_ewarm.s`文件 - 添加`n32g45x_std_periph_driver/src`目录下文件 - 至此,裸机工程建立成功. - 可以随便写个点亮小灯测试下 ```c void vLedConfig( void ) { GPIO_InitType GPIO_InitStructure; RCC_EnableAPB2PeriphClk( RCC_APB2_PERIPH_GPIOA, ENABLE ); GPIO_InitStructure.Pin = GPIO_PIN_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitPeripheral( GPIOA, &GPIO_InitStructure ); } void Delay( uint32_t count ) { for( ; count > 0; count-- ); } int main( void ) { vLedConfig(); while( 1 ) { GPIO_SetBits( GPIOA, GPIO_PIN_8 ); Delay( 0x28FFFF ); GPIO_ResetBits( GPIOA, GPIO_PIN_8 ); Delay( 0x28FFFF ); } } ``` #### 时钟测试 系统通过启动文件调用`/Drivers/CMSIS/device/system_n32g45x.c`中`SetSysClock()`.Bsp默认已经配置为144MHz.可以通过MCO引脚测量实际值. ```c void vShowClock( void ) { RCC_ClocksType RCC_ClockFreq; GPIO_InitType GPIO_InitStructure; RCC_GetClocksFreqValue( &RCC_ClockFreq ); rt_kprintf( "SYSCLK: %d\n", RCC_ClockFreq.SysclkFreq ); rt_kprintf( "HCLK: %d\n", RCC_ClockFreq.HclkFreq ); rt_kprintf( "PCLK1: %d\n", RCC_ClockFreq.Pclk1Freq ); rt_kprintf( "PCLK2: %d\n", RCC_ClockFreq.Pclk2Freq ); RCC_EnableAPB2PeriphClk( RCC_APB2_PERIPH_GPIOA, ENABLE ); GPIO_InitStructure.Pin = GPIO_PIN_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitPeripheral( GPIOA, &GPIO_InitStructure ); RCC_ConfigMcoPllClk( RCC_MCO_PLLCLK_DIV12 ); RCC_ConfigMco( RCC_MCO_PLLCLK );//RCC_MCO_HSE } ``` #### RTT-nano - IAR添加`/rt-thread/src`下全部文件及`board.c`,添加`/libcpu/`相关内核文件夹下的`context_iar.s`和`cpuport.c` - 引用`/rt-thread/include/`和`/rt-thread` - 此时编译会报冲突,需要注释`it.c`文件内`void HardFault_Handler(void)`和`void SysTick_Handler(void)` - 修改下之前的点灯程序 ```c #include "rtthread.h" int main( void ) { vLedConfig(); while( 1 ) { GPIO_SetBits( GPIOA, GPIO_PIN_8 ); rt_thread_delay( 1500 ); GPIO_ResetBits( GPIOA, GPIO_PIN_8 ); rt_thread_delay( 1500 ); } } ``` #### RTT-Finsh **串口输出** - 使能宏定义`RT_USING_CONSOLE` - 配置UART,可以先用`print`测试下,这部分. - 配置`rt_hw_console_output`函数.将`printf`改为`rt_kprintf`应可以输出,并可以看到RTT系统信息. **串口输入** - 添加并引用`/rt-thread/components/finsh`中相关文件. - 使能宏定义`RT_USING_FINSH` - 配置`rt_hw_console_getchar`函数,推荐使用中断方式或DMA方式.可以参考官方中断示例. - 如果可以执行的话,那么可以看到输出`msh >`,输入`help`可见系统响应. > 调试过程中,遇到编译无报错,执行后未见`msh>`字样,不响应指令.仿真可见buf中指令,因此uart接收部分没有问题.跟踪执行过程,可以见执行了finsh任务的创建函数且返回了RT_OK.但是任务未被执行. > > 最终发现,默认finsh任务优先级21.但是`rtconfig.h`中定义任务优先级最大为8.修改此处即可.
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
#ifndef
Null
文章
2
回答
2
被采纳
1
关注TA
发私信
相关文章
1
求高手指点,RTThread下nanosleep()函数功能如何实现?在线等啊
2
RTT1.2.2在新塘Nano130KE3BN的移植中始终出现栈溢出的问题
3
官方能否出一个nano在mdk下移植finsh到stm32的教程
4
从裸机开始,创建一个RT-Thread Nano系统工程
5
Nano版如何启用shell
6
项目从RTT 2.x NANO移植到 RTT 3.x ENV 环境
7
nano 版本有没有集成到 IAR 中啊?
8
关于MDK5的RT-THREAD NANO中添加MSH组件的例程
9
rtt_nano版本,源代码在哪里下载啊?
10
RTT Nano 在keil 使用C++11 的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部