资料

  1. 官方开发板硬件资料下载

  2. 官网BSP及例程下载(支持 KEIL 及 IAR)

  3. N76E003_datasheet

疑问

疑问一

我想实现一个管脚中断,然后在用官方给的头文件时发现一个问题:发生管脚中断的端口配置。
其datasheet相关内容如下:


我不知道是我自己考虑错了,还是官方的头文件出现了问题,暂且先在这里记录一下。我觉得这里应该修改为如下定义才更准确:

疑问二

我真的无力吐槽了,今天又TM被这个SB单片机坑了一笔!
从官网下载的例程运行结果根本就是错误的,我是真他妈不知道这种例程怎么好意思往官网上放。
吐槽完了说一下我需要实现的功能:
我想往片上Flash or E2PROM里存储一些掉电也可以保存的数据,然后我就找到了官方的IAP_Dataflash_EEPROM,发现例程里有如下代码:

UINT8 datatemp;
UINT16 system16highsite;Write_DATAFLASH_BYTE (0x3802,0x34);
Write_DATAFLASH_BYTE (FLASH_H_LOW,0xaa);            // FLASH_H_LOW = 0x4703
Write_DATAFLASH_BYTE (FLASH_H_HIGH,0x66);           // FLASH_H_LOW = 0x4704datatemp = Read_APROM_BYTE(0x3802);
system16highsite = ((Read_APROM_BYTE(FLASH_H_HIGH)<<8)+Read_APROM_BYTE(FLASH_H_LOW));

这个代码意图很明显:往指定地址写数据,并且读回,然而。。。读回的数据只有datatemp是正确的,system16highsite的值一直是零。。。
然后我将代码修改如下:

Write_DATAFLASH_BYTE (0x3800,0x34);
Write_DATAFLASH_BYTE (0x3801,0x55);
Write_DATAFLASH_BYTE (0x3802,0x56);
Write_DATAFLASH_BYTE (0x3803,0xaa);
Write_DATAFLASH_BYTE (0x3804,0x66);datatemp = Read_APROM_BYTE(0x3800);
printf("datatemp[0x%bx]\n", datatemp);
datatemp = Read_APROM_BYTE(0x3801);
printf("datatemp[0x%bx]\n", datatemp);
datatemp = Read_APROM_BYTE(0x3802);
printf("datatemp[0x%bx]\n", datatemp);
datatemp = Read_APROM_BYTE(0x3803);
printf("datatemp[0x%bx]\n", datatemp);
datatemp = Read_APROM_BYTE(0x3804);
printf("datatemp[0x%bx]\n\n", datatemp);

通过这种方式写入后读回,结果都是正确的。。。那问题就出在地址0x4700上了,既然这个地址不能用,为何定义这个地址?如果能用,又为何例程结果是错误的?CAO
顺便我的Flash读写测试工程上传一下。

总结

虽然很多很多年都没再接触过51单片机了,但是现在看起来感觉还是比较简单了。
既然已经研究了大半天,就记录一下吧,说不定啥时候又得用上呢。。。

N76E003的管脚中断和外部中断:

管脚中断:可以随意配置任一管脚产生(datasheet说的)中断,但是一个程序中最多配置8个中断;而且所有管脚触发的中断都是通过中断号7处理的,也就是说这些中断源共用一个中断;
外部中断:指定的管脚才可以配置为外部中断源,从上面的管脚图可以看到,外部中断0 INT0只能由P30触发,而外部中断1 INT1只能由P17触发。

中断处理函数

// 首先就是关于中断函数,比如下面这个。其实它的函数名怎么取都没有关系,重点是 "interrupt 0",
// 这个"interrupt 0"就指定了这是0号中断触发中断服务函数。
void EXT_INT0(void) interrupt 0
{ cnt_int0++;
}

寄存器配置

// 以下定义了 P00 作为管脚中断触发源,上升沿触发
Enable_INT_Port0;                               // set P0 as interrupt port
Enable_BIT0_RasingEdge_Trig;            // set Px0 as interrupt pin// 那上面的功能到底是怎么实现的呢?
// 可以F12看看其定义:
#define     Enable_INT_Port0                    PICON &= 0xFC;
#define     Enable_BIT2_RasingEdge_Trig         PICON|=0x10;PINEN&=0xFB;PIPEN|=0x04// 然后,直接在datasheet中搜索寄存器名,查看每个bit的功能

关于51内核的N76E003单片机相关推荐

  1. 51内核单片机实现Bootloader跳转到用户程序,要求两个程序都要支持中断

    Flash空间规划 本文使用的单片机为笙科的A9129F6,Flash大小为64KB,SRAM大小为8KB. Flash空间规划如下. 起始地址 结束地址 用途 0x0000 0x3fff Bootl ...

  2. 【CC2530授课笔记】① 点亮一颗LED灯及实现流水灯(51内核单片机)

    实验套件介绍 如图所示是我们的CC2530实验套件,从图上可以看出,板子中间有四个LED,分别是:LED3,LED4,LED1,LED2 课堂任务 ①通过编程控制LED3点亮 ②通过编程控制LED3闪 ...

  3. n76e003引脚图_老司机带你入门新塘N76E003单片机

    出品 21ic中国电子网 一路向北lm 网站:bbs.21ic.com 第一个问题,究竟要玩哪一个芯? 今年真是变幻莫测的一年,芯片的真是流水账的价格,一天一个样,翻翻自己的抽屉,一堆的板卡,不知玩弄 ...

  4. n76e003引脚图_新手如何入门新塘N76E003单片机

    本帖最后由 一路向北lm 于 2020-12-22 16:19 编辑 1.gif (4.53 KB, 下载次数: 2) 2020-12-22 11:18 上传 第一个问题,究竟要玩哪一个芯? 今年真是 ...

  5. 新手如何入门新塘N76E003单片机

    第一个问题,究竟要玩哪一个芯? 今年真是变幻莫测的一年,芯片的真是流水账的价格,一天一个样,翻翻自己的抽屉,一堆的板卡,不知玩弄哪一个,一直想玩弄一下新塘的片子,可惜论坛没怎么做过新塘的开发板评测活动 ...

  6. 通过串口烧录N76E003 单片机(ISP)

    一.N76E003烧录模式介绍 Flash存储器支持硬件编程和应用编程(IAP).如果产品在研发阶段或产品需要更新软固件时,硬件编程就显得不太方便,采用在系统编程(ISP)方式,可使这一过程变得方便. ...

  7. 新塘系列linux_老司机带你入门新塘N76E003单片机

    第二个问题,这颗芯开发环境如何搭建? 张三说IAR好用,李四说Keil 好用 pack包多,王五说我就喜欢捣鼓,用VScode有些芯片也可以用----..,开发IDE云里雾里,最好上手还是keil C ...

  8. [应用方案]如何入门新塘N76E003单片机

    第一个问题,究竟要玩哪一个芯? 今年真是变幻莫测的一年,芯片的真是流水账的价格,一天一个样,翻翻自己的抽屉,一堆的板卡,不知玩弄哪一个,一直想玩弄一下新塘的片子,可惜论坛没怎么做过新塘的开发板评测活动 ...

  9. STM32单片机VCAP电容太小引起内核电压波动导致单片机异常复位

    问题:现象1:上位机记录的角度从-90.3°变为0,现象2:有时甚至不回复数据 在线调试发现单片机死机,使用软件RST复位之后查看RCC_CSR寄存器发现并不是程序里的看门狗复位排除是软件看门狗复位引 ...

最新文章

  1. NodeJS学习之网络操作
  2. Vue Router路由及路由重定向
  3. VS2017 Pro未能找到路径“……\bin\roslyn\csc.exe”的解决方案
  4. java 泛型编程_java 泛型编程简介
  5. java mb单位转换_字节、kb、mb等单位,是怎样换算的?
  6. SVG—最简单的SVG动画
  7. matlab函数grid,Matlab基本函数-grid、box函数
  8. Linux文件夹的介绍
  9. Unity日常Bug
  10. Arduino Mega/Uno制作宏定义键盘(不需刷firmware!!)
  11. 数据分析——房源分析项目
  12. 程序员就是这样聊天把女朋友聊没的。。。
  13. MeeGo开发者(二):MeeGo架构
  14. 高空作业安全绳穿戴识别检测算法 YOLOv3
  15. 共享充电宝PCBA方案开发设计
  16. 数据结构与算法:二叉树专题
  17. 阿里云服务器不能使用sendmail发送邮件?
  18. telerik学习记录-RadButton(上)
  19. Ubuntu基础-终端打开软件
  20. Android中保存图片到本地功能实现

热门文章

  1. python分两列输出_Pandas实现一列数据分隔为两列
  2. python预测数据的方法_学习各种预测数据的方法
  3. VBox+DeBian命令行虚拟机 与主机文件共享
  4. jQuery购物车全选总价案例
  5. 电影《一一》经典台词
  6. 计算机高级培训测试题答案,计算机培训测试题和答案
  7. 京东web登录测试用例编写
  8. [实战系列]SelectDB Cloud Kafka Connect 最佳实践张家锋
  9. react中的setState详解
  10. 华三交换机DHCP配置