当前位置:首页 > 单片机 > 单片机
[导读]在市面上的单片机,如果想找出一款支持PWM、ADC、UART中任意一种功能的型号,价格一般都超过人民币1块钱,而且一般都只支持其中的一到两种,除非是价格达到2~3元的型号。而如果选用前面列举参数的单片机,本身硬件已

在市面上的单片机,如果想找出一款支持PWM、ADC、UART中任意一种功能的型号,价格一般都超过人民币1块钱,而且一般都只支持其中的一到两种,除非是价格达到2~3元的型号。而如果选用前面列举参数的单片机,本身硬件已经直接支持ADC,而且还可以通过软件在不影响主程序的前提下实现高速PWM和UART功能。


上图为该双核单片机的内部构架示意图,从图可见该单片机内部有两个核,分别为FPP0和FPP1,每个核自己有独立的程序指针(PC)、堆栈指针(SP)、累加器(ACC)和状态寄存器(CF)。设计原理并不复杂,是让这两个核共享系统时钟,第一个系统时钟周期执行FPP0程序,第二个系统时钟周期执行FPP1程序,依次间隔往复,这样就可以让两个核各自运行自己的程序。

两个核都可以访问控制RAM和特殊功能寄存器,因为在一个系统周期内只有一个核在工作,所以不会出现两个核同时写某个RAM或寄存器的状况。为了让大家更清晰地理解这个双核单片机的工作机理,下面我以问答的方式对部分特性进行说明。

1. 两个核的程序放在什么地方?如何执行?

样例代码

地址 指令

  0x000 goto main0

  0x001 goto main1

  ...

  main0:

  ...

  main1:

  ...

回答:单片机上电后FPP0的程序指针指向0x000,FPP1的程序指针指向0x001,但是单片机系统只启动FPP0,FPP0跳转到main0开始执行该位置的代码,FPP1需要在main0代码设置相应控制寄存器位才能启动。

系统上电只启动FPP0是为了便于程序统一初始化各特殊功能寄存器,如果在FPP0和FPP1中都分别进行初始化,很有可能造成系统配置混乱。

2. 如果我在main1中使用跳转指令跳转到main0中,会有什么后果?

  goto main0

  goto main1

  ...

  main0:

  ...

  main0_loop:

  ...

  goto main0_loop

  ...

  main1:

  ...

  goto main0 //***这里跳转到main0中***//

  ...

回答:编译器会报警出错,所以后果就是代码错误无法通过编译,需要删除该代码。

3. 会不会出现两个核同时写某个RAM变量而导致写失败的情况?

回答:每个系统时钟周期只有一个核会工作,所以不会出现两个核在同一时刻写同一地址的情况。

4. 既然FPP1需要FPP0的程序来启动,那不启动FPP1时是不是FPP0运行速度会增快一倍呢?

回答:启动FPP1与不启动FPP1不影响FPP0的运行速度,FPP0的速度总是系统时钟的一半,这个是由系统硬件自动进行分配的,不启动FPP1的影响是在属于FPP1的那一半时间单片机没有执行代码。

5. 应广双核单片机支持中断吗?

回答:应广双核单片机支持中断,中断源和其它普通单片机没有太多差异,象常见的外部中断、定时中断、ADC中断都支持,使用上也和其它普通单片机没有区别。

要留意的是应广双核单片机的中断程序只能由FPP0使用,所有的中断源共用一个中断入口,需要用户通过中断标志位判断中断类型。另外该单片机支持中断嵌套,需要用户自己对累加器和状态寄存器进行压栈和弹栈操作。

6. 应广双核单片机采用什么语言编程?好不好掌握?

回答:应广双核单片机IDE编译环境支持汇编和Mini C,非常容易上手,可以说是目前单片机IDE编译环境最好掌握的。

就是经验丰富的工程师,不少单片机开发工具拿到手后都需要提供个相对完整的工程样例才能开始编程,有的单片机甚至写完代码后工程师都还不会自己创建新工程。应广提供的IDE开发环境完全是智能傻瓜式,根本不需要任何样例代码,拿着datasheet就可以开始编程。

应广双核单片机总共有90余条汇编指令,IDE编译器支持汇编和基本C语句混合编程,而且IDE编译器会自动识别,不象其它编译器需要使用伪指令进行标示,我们可以通过一些简单例子来感受其编程的便捷性。

代码样例1

  .romadr 0x000 //这一句也可以去掉,没有这一句编译器会自动从0地址开始放代码,是同样结果

  goto main0

  goto main1

  .romadr 0x010

  ...

  main0:

  ...

  main0_loop: //这里是用汇编实现FPP0主循环

  ...

  goto main0_loop

  ...

  main1:

  ...

  while(1) //这里是用基本C语句实现循环

  {

  ...

  }

代码样例2

  word word_data //定义一个WORD变量

  byte byte_data //定义一个字节变量

  bit bit_data //定义一个位变量

  ...

  set1 bit_data //用汇编指令设置该位变量为1

  set1 byte_data.5 //用汇编指令将该字节变量的bit5设为1,不需要在变量中进行位定义

  bit_data = 0 //用C基本语法将位变量清0

  byte_data = 0 //用C基本语法将字节变量清0

  mov a,0x12 //用汇编将WORD变量赋值0x3412

  mov lb@word_data,a

  mov a,0x34

  mov hb@word_data,a

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

慕尼黑2025年9月11日 /美通社/ -- 高端智能电动汽车品牌问界(AITO)在2025年德国国际汽车及智慧出行博览会(IAA MOBILITY)上,正式发布了其最新全球产品阵容——专为中东市场深度本地化打造的AIT...

关键字: AI 智能驾驶 测试 生态系统

香港2025年 9月12日 /美通社/ -- 全球领先的互联网社区创建者 - 网龙网络控股有限公司 ("网龙"或"本公司",香港交易所股票代码:777)欣然宣布,其子公司My...

关键字: AI 远程控制 控制技术 BSP

AI赋能制造,黄埔汇聚全球新机遇 广州2025年9月11日 /美通社/ -- 2025年9月10日,由广州开发区投资集团有限公司、广州开发区黄埔区具身智能机器人产业发展促进会、华南美国商会共同主办的"2025...

关键字: 智能制造 AI 人工智能 供应链

天津2025年9月11日 /美通社/ -- 国际能源署(IEA)数据显示,2024 年全球数据中心电力消耗达 415 太瓦时,占全球总用电量的 1.5%,预计到 2030 年,这一数字将飙升至 945 太瓦时,近乎翻番,...

关键字: 模型 AI 数据中心 BSP

深圳2025年9月11日 /美通社/ -- 近日,德国柏林国际电子消费品展览会(简称IFA)期间,国际公认的测试、检验和认证机构SGS为极壳(Hypershell) 全球首款户外动力外骨骼产品Hypershell X 系...

关键字: SHELL RS AI SI

近日,一则关于 AI 算力领域的消息引发行业震动!据科技网站 The Information 援引四位知情人士爆料,中国科技巨头阿里巴巴与百度已正式将自研芯片应用于 AI 大模型训练,打破了此前对英伟达芯片的单一依赖。

关键字: AI 算力 阿里 百度 芯片 AI模型

2025年9月11日,中国上海 — 思特威(上海)电子科技股份有限公司(股票简称:思特威,股票代码:688213)近日宣布,全新推出5000万像素0.7μm像素尺寸手机应用CMOS图像传感器——SC535XS。SC535...

关键字: CMOS图像传感器 手机 AI

2025年上半年,中国电子行业在 AI 与智能制造双轮驱动下活力迸发,规模以上电子信息制造业增加值同比增长11.1%,出口、AI 终端创新与国产软硬件生态均呈向好态势。作为感知层核心的传感器,正成为技术变革与产业跃迁的关...

关键字: AI 智能制造 传感器

2025 IPC CEMAC电子制造年会将于9月25日至26日在上海举办。年会以“Shaping a Sustainable Future(共塑可持续未来)”为主题,汇聚国内外专家学者、产业领袖与制造精英,围绕先进封装、...

关键字: PCB 电子制造 AI
关闭