|
- 前言
- 本次测评是直接在NXP官网上申请的,不是参加的EEWORLD的活动,所以评测也没有了压力,自己有空了就玩玩。
- 我和有个坛友一样,首次接触ARM单片机就是LPC1114,当年是ZLG推广的,开发板当时也很“便宜”,50块钱逻板+下载器。从51单片机转过来,很快就入门了。玩过LPC1114的都知道,它是基于寄存器写代码的,对于了解单片机底层确实很深入。后来玩STM32直接用库就没怎么深入了。
- 再之后玩过LPC1225、LPC1770系列,之后就转STM32了。
- N947资源还是比较不错的,我主要看中的是双核、AI、16位AD,3运放,XSPI、大内存、大FLASH这几款特性。因为我后边想在项目里用上它。特别是它的XSPI可以同时支持外部FLASH和外部串行RAM,扩个32M大内存也没问题。
- 安装环境
- 引脚配置工具
- NXP的引脚配置工具功能非常强大,和STM32 CUBE MX有一拼,不过功能多了显得有些乱,特别是在高分屏上显示的总觉得怪怪的。STM32CUBE MX它生成的代码有很多注释,用户程序只要放在规定的USER CODE注释中,再次生成也不会被删除,但NXP的好像不行,不过一般也不需要,因为它生成的文件逻辑层次很好,都是在独立文件中,也不需要和用户代码嵌在一起。
- 还有个特点是NXP的更新程序代码有代码比较工具,以及寄存器变更列表,很容易知道改了哪些。
-
- 点灯
- 查看开发板图纸,三色灯-红灯是安排在P0-10引脚上的,低电平点亮
- 用引脚配置工具配置引脚,配置别称,初始电平,方向等
-
-
引脚标签一定要起一个,后边写代码时好调用
-
然后再配置一下Systick,配置为1ms中断
- 然后就是代码了
- 搞个延时函数,以及systick irq中断函数,修改主逻辑,其它的代码不改
-
uint32_t tick_count=0;
void Delay(int ms){
tick_count=ms;
while(tick_count);
}
void SysTick_Handler(void){
if(tick_count)
tick_count--;
}
int main(void)
{
char ch;
/* Init board hardware. */
/* attach FRO 12M to FLEXCOMM4 (debug console) */
CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u);
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
/* attach TRACECLKDIV to TRACE */
CLOCK_SetClkDiv(kCLOCK_DivTraceClk, 2U);
CLOCK_AttachClk(kTRACE_DIV_to_TRACE);
BOARD_InitPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
PRINTF("hello world.\r\n");
BOARD_InitBootPeripherals(); //初始化外设-SYSTICK 1ms中断
while (1)
{
//ch = GETCHAR();
//PUTCHAR(ch);
Delay(500);
BOARD_INITPINS_LED_RED_GPIO->PDOR&=~BOARD_INITPINS_LED_RED_GPIO_PIN_MASK; //清0,点亮
Delay(500);
BOARD_INITPINS_LED_RED_GPIO->PDOR|=BOARD_INITPINS_LED_RED_GPIO_PIN_MASK;
}
}
代码中,由于在引脚配置时,已配置了引脚标签,所以这里调用就比较方便了。
-
寄存器直接写代码,NXP的还是很方便的。
-
测试中发现一个问题,其它朋友好像也提到过的,下载程序没运行,调试或复位才会执行,后边再查查原因。
-
我比较喜欢自己搞代码,我看有很多评测把官方例子跑一次就好了,那是学不到东西的,得自己动手。
|
|