大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是国内Cortex-M内核MCU厂商高主频产品。
在 2021 年初痞子衡写了篇 《盘点国内Cortex-M内核MCU厂商高性能产品》,搜罗了当时市面上主频不低于 96MHz 的 CM 核国产 MCU。如今过去了两年,痞子衡又一次梳理了国产 Cortex-M 内核高主频 MCU 型号,这次标准定高一点,将主频提升到 144MHz。痞子衡仔细查阅了近 80 家国内 MCU 公司官网,找到了如下十二款高主频产品:
1. 雅特力科技 AT32F437@288MHz
2. 华大半导体 HC32F4A0@240MHz
3. 万高科技 V84xx@200MHz
4. 兆易创新 GD32E507@180MHz
5. 华芯微特 SWM341@150MHz
6. 国民技术 N32G457@144MHz
7. 灵动微电子 MM32F5@120MHz,可超频168MHz
8. 航顺芯片 HK32F39A@120MHz,可超频160MHz
9. 中颖电子 SH32F205@120MHz
10. 航芯科技 ACH512@110MHz
11. 东软载波 ES32F3696@96MHz
12. 极海半导体 APM32F103@96MHz
AT32F437系列超高效能微控制器,搭载32位ARM® Cortex®-M4内核,配合先进工艺与整合技术缔造业界Cortex®-M4最高主频效能288MHz的运算速度。内建的单精度浮点运算单元(FPU)、数字信号处理器(DSP)及存储器保护单元(MPU),搭配丰富的外设及灵活的时钟控制机制,能满足多种领域应用。最高可支持超大容量4032KB的闪存(Flash)和高达512KB的SRAM,超越业界同级芯片水平。
- 发布年份:2021
- 型号主页:http://www.arterytek.com/cn/product/AT32F437.jsp
GD32F4系列MCU采用Arm® Cortex®-M4内核,处理器主频高达240MHz,可支持算法复杂度更高的嵌入式应用,具备更快速的实时处理能力,并拥有业界领先的大容量存储优势。
- 发布年份:2022
- 型号主页:http://www.gigadevice.com.cn/product/mcu/arm-cortex-m4
HC32F4A0系列是 ARMv7-M 架构 32bit Cortex-M4 CPU,集成FPU、MPU,支持SIMD指令的DSP ,全指令跟踪单元ETM, 及CoreSight标准调试单元。最高工作主频 240MHz ,达到 300DMIPS或825Coremarks的运算性能。
- 发布年份:2021
- 型号主页:http://www.xhsc.com.cn/Productlist/list.aspx?lcid=9&cid=9&key=HC32F4A0
Air105是合宙LuatOS生态下的一款芯片, QFN88封装,与兆讯的 MH1903S 是同一款芯片,基于 Cortex-M4F 内核, 最高频率204Mhz, 片上内建640KB SRAM和4MB Flash。
- 发布年份:2022
- 型号主页:http://www.megahuntmicro.com/index.php?catid=5
M460 系列基于Cortex-M4F内核,提供 200 MHz 工作频率、7 V~3.6 V 工作电压、-40°C to 85°C/105°C 工作温度、高达 1024 KB Flash、高达512 KB SRAM、通过认证的 IEC60730-1 Class B Software Test Library (STL),可应用于物联网网关,工业控制,电信,数据中心等领域。
- 发布年份:2018
- 型号主页:http://www.nuvoton.com/products/microcontrollers/arm-cortex-m4-mcus/m463-can-fd-usb-hs-series/
ACM32F403 芯片的内核基于 ARMv8-M 架构(“星辰”STAR-MC1处理器),支持 Cortex-M33 和 Cortex-M4F 指令集,芯片最高系统频率为 180 MHz。
- 发布年份:2021
- 型号主页:http://www.aisinochip.com/index.php/product/child1/id/219.html
V84系列是基于Cortex-M4F内核的高性能MCU,最高180MHz工作频率,带存储器保护单元(MPU)、最多支持5MB的Flash和1MB的SRAM,支持UART、I2C、SPI、USB等多种通讯接口,集成大容量缓存,内置浮点运算单元(FPU),提升系统综合运行效率。
- 发布年份:2021
- 型号主页:http://www.vangotech.com/pd.php?id=4&types=1
APM32F405/407系列MCU,基于Arm® Cortex®-M4内核,全面兼顾高运算、高实时、易用性等特点,拥有出色的CPU运算性能,支持单精度FPU、增强型DSP处理指令;超大存储空间可满足复杂程序的数据运算需求,丰富外设资源满足多应用需求。
- 发布年份:2022
- 型号主页:http://www.geehy.com/apm32?id=47
PT32Z192是基于Cortex-M3内核的一款32位高性能MCU,最高主频为160MHz。深度休眠待机功耗5μA(I/O可唤醒), 支持AES, QSPI支持开方/坐标旋转/三角函数/卷积(13*13)/指纹算法等。主要应用:指纹模块,指纹门锁,指纹挂锁等.
- 发布年份:2021
- 型号主页:http://pai-ic.com/products/pt32z192
SWM341是一款基于ARM Cortex-M33的32位微控制器,片上包含精度为 1%以内的 20MHz/40MHz 时钟,最高可 倍频到 150 MHz 时钟频率。适用于家用电器、商用电器、工业控制,电机驱动等诸多应用领域。
- 发布年份:2021
- 型号主页:http://www.synwit.cn/gaishu944/
CH32F208系列是基于Cortex-M3内核设计的无线型微控制器,此系列主频高达144MHz。片上集成2Mbps低功耗蓝牙BLE 通讯模块、10M以太网MAC+PHY模块、USB2.0全速设备+主机/设备接口、CAN控制器等。
- 发布年份:2021
- 型号主页:http://www.wch.cn/products/CH32F208.html
N32G457系列(工业互联型)采用32 bit ARM Cortex-M4F内核,集成高达512KB片内FLASH,144KB SRAM,多达17个高性能模拟器件,18个数字通讯接口,同时集成10/100M以太网接口,数字摄像头接口,内置10余种密码算法硬件加速引擎,支持存储加密、用户分区保护、安全启动等多种安全特性。
- 发布年份:2021
- 型号主页:http://www.nationstech.com/N32G457/
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。
最后欢迎关注痞子衡个人微信公众号【痞子衡嵌入式】,一个专注嵌入式技术的公众号,跟着痞子衡一起玩转嵌入式。
衡杰(痞子衡),目前就职于某知名外企半导体公司MCU系统部门,担任嵌入式系统应用工程师。
专栏内所有文章的转载请注明出处:http://www.cnblogs.com/henjay724/
与痞子衡进一步交流或咨询业务合作请发邮件至 hengjie1989@foxmail.com
可以关注痞子衡的Github主页 http://github.com/JayHeng,有很多好玩的嵌入式项目。
关于专栏文章有任何疑问请直接在博客下面留言,痞子衡会及时回复免费(划重点)答疑。
痞子衡邮箱已被私信挤爆,技术问题不推荐私信,坚持私信请先扫码付款(5元起步)再发。
SpringBoot-08SpringSecurity创建了一个新项目,创建时选择导入starter-web1.环境搭建1.1导入thymeleaf<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-thymeleafartifactId> dependency>复制1.2导入静态资源css、js这样的静态资源导入到static文件夹下前端页面导入到templates文件夹下如果需要静态资源,可以私信我或者发邮件moyu_zc@163.com 1.3关闭thymeleaf缓存spring.thymeleaf.cache=false复制1.4测试运行2.用户认证和授权2.1导入依赖<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-securityart
首先,应该明白总线是什么?度娘的完整定义是:总线是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类。其实,总线就是一种内部结构,它是CPU、内存、输入、输出设备传递信息的公用通道。工程师为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线。另外就是采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连。总线分类01总线按功能和规范可分为五大类型数据总线、地址总线、控制总线、扩展总线及局部总线。数据总线、地址总线和控制总线也统称为系统总线,即通常意义上所说的总线。常见的数据总线为ISA、EISA、VESA、PCI等。地址总线:是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同,地址总线的位数决定了CPU可直接寻址的内存空间大小。控制总线:用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和I/O接口电路的;也有是其它部件反馈给CPU的,比如:中断申请信号、复位信
说起LinkedHashMap其实都会带着一个词LRU(LeastRecentlyUsed)也就是最近最少使用,用LinkedHashMap实现LRU再适合不过了,相比较Hash的无序,它插入的顺序和遍历的顺序是一致的,用一个例子先来看看它的功能;放入5个元素,删除规则是当数组个数大于容量,则删除头元素; LinkedHashMap作为HashMap的子类,他的实现就是在原本HashMap的基础上增加before、after两个前后指针;来一张网络图片,画的很好,能更清晰的理解; 除了前后指针外,还有一个重要的参数就是accessOder排序规则,true则是按照访问顺序排序,也就是访问后会把访问元素放到最后,false则是按照插入顺序排序,后插入的数据放在最后; 总结一下:LinkedHashMap是有序的,分为插入顺序和访问顺序,操作后后把元素移动到双向链表的尾端;LinkedHashMap是基于HashMap和双向链表实现的;LinkedHashMap线程不安全
一、Verdi用途与优势Verdi主要用于生成fsdb模型,同VCS使用的vcd文件相比,verdi使用的fsdb相当于vcd文件经过霍夫编码压缩之后的精简版,可用于查看fsdb波形并追踪RTL代码。虽说verdi、modelsim都是用来调试波形,modelsim与verdi相比,最大的缺点是波形不会全dump,wave窗口拉不全的话需要重新跑,而verdi边运行边查看。具体做法是,在使用tcl指令,在运行仿真时,设置仿真时间,每次run完毕之后,在nWave窗口中file——>自动加载(shift+L快捷键),异常方便!二、FSDB波形Verdi只能查看fsdb格式的波形,而VCS可以生成供DVE查看的vpd格式的波形,如果想要输出fsdb格式的波形,需要额外在testbench中添加fsdb指令,或者通过脚本进行设置。FSDB全称为(FastSignalDataBase):快速信号数据库,fsdb文件是Verdi使用的一种专用数据格式,fsdb通过verilog的PLI接口实现,如:fsdbDumpfile("f0.fsdb");//指定生成的fsdb文
前言django的模板里面变量取值是通过句点语法来取值,就是一个点(.)符号。取值的对象也可以是字符串,int类型,list列表,字典键值对,也可以是一个类的实例对象。views视图比如我在views.py视图函数定义了一些不同类型的变量fromdjango.shortcutsimportrender fromdjango.httpimportHttpResponse #Createyourviewshere. fromdjango.httpimportJsonResponse fromdjango.shortcutsimportrender #上海悠悠,QQ交流群:750815713 defpersonalView(request): context={ "name":"上海-悠悠", "n_name":"悠悠", "age":20, "fancy":["python","django","pytest"
上篇博客我们聊了RN中关于Timing的动画,详情请参见于《ReactNative之结合具体示例来看RN中的的Timing动画》本篇博客我们将从一个“拉皮条”的一个动画说起,然后来看一下RN中Spring动画的使用方式以及具体效果。Spring从名字中不难看出是弹性弹簧的意思,也就是我们可以使用Spring这个动画来实现一些弹性的动画效果。本部分我们先通过一个“拉皮条”的示例来简单的看一下Spring动画的使用方式,然后在看一下Spring动画中可配置的属性以及每个属性的作用。一、从“拉皮条”谈起此拉皮条非彼“拉皮条”,此拉皮条是正经拉皮条,简单的说,就是有一个皮条,我们用劲拉他,然后再松开观察皮条的运行轨迹。下方就是我们“拉皮条”的示例,在这个“拉皮条”的示例中,我们主要使用了Animation中的Spring动画。下方这个Demo中这个灰色的带子就是我们要拉的皮条,一边是黑色的固定皮条的东西,一端是可以拉动的红色方框,我们往一边拉动红色方块,这个皮条就会被拉伸,放手后皮条就会拉动我们的方块到原位置,当然这个拉动的过程中是符合弹簧拉伸效果的。下方是调整方块质量的操作区,从下方效果中不
监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题。监控系统业界有很多杰出的开源监控系统。1.ZabbixZabbix作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控,VMware监控和CPU,内存,网络,磁盘空间性能监控。该企业级网络监控工具能够每分钟进行3,000,000次检查,具有更高的安全性和数据中心监控功能。2.NagiosNagios是一款用于监控IT基础架构和查看当前状态、历史日志和基本报告的开源软件
各位技术小伙伴,想好今天怎么和女票过了么?奉上教程一篇,供参考。祝大家七夕快乐呦~自从在携程找了个程序员做男朋友,整个人生都不一样了。我知道,你们一定会说:好了好了,不就是携程的程序员吗,我知道了又是几个包子的事情,又是程序员多么机械的事情,这种黑我们已经腻了!然而,实际上,我想说:这些黑,根本毫无依据!根据网上的言论,程序员都是机器人,理解问题匪夷所思,和别人聊天总是出各种bug是吗?然而我也天真的相信了,开开心心的找了个程序员做男朋友。我想着,这么老实的人,真是用来欺负的完美对象啊,况且还是旅游圈的程序员,对旅游更懂更能分分钟和我一起说走就走。然而,我没想到啊没想到,这一切居然是噩梦的开始啊!首先第一点就是:我吵架从来没吵赢过啊!程序员的逻辑性真的是令人发指啊!任何一丁点小的逻辑错误都不放过啊!我长这么大,一直是靠嗓门吵架,自出娘胎未逢敌手。然而自从有了男朋友,每次吵架简直就是个辩论会啊!我TM只是心情不好想吵架啊!我不是想和你澄清需求啊!我不想听你说什么逆否命题啊!更不要用什么反证法来告诉我错了啊!我只是想发泄下内心的郁闷啊!是谁告诉我程序员都是木讷的机器人的啊!我真想打死他啊!
Mac-OSX的Python3.5虚拟环境下安装Opencv 1 关键词 关键词:Mac,OSX,Python3.5,Virtualenv,Opencv 2 概述 本文是一篇 环境搭建 的基础文。 为了这个东西让自己折腾了接近2天的时间,各种筛选资料,各种尝试,最后终于找到了相应的资料,然后成功安装。 在整理本文的时候,特别感谢这个作者,他提供了两篇安装opencv的方法,分别是 python2.x[1] 和 python3.x[2] 。 笔者按照 3.x 的步骤和线索,再解决掉一些文中未的提及的中间问题,最后终于成功安装。 由于主要步骤和原文没有太大出入,所以本文纯粹是原文的中文布道版吧。 本文适合读者群: MaxOSX用户Python用户使用OpenCV进行图片处理的用户3 安装步骤 MacOSX苹果OSX操作系统HomeBrew软件库安装命令行python3.5virtualenv虚拟环境pip安装Numpy安装Xcode直接从AppStore里面下载安装opencv3除去最后一条的所有先决条件,由于比较简单而且中文资料丰富,本文就假设用户已经全部顺利完成了。本文的重
视频多段录制基本使用流程如下:1.启动画面预览。2.开始录制。3.开始播放BGM。4.暂停录制。5.暂停播放BGM。6.继续播放BGM。7.继续录制。8.停止录制。9.停止播放BGM。//开启画面预览recorder=[TXUGCRecordshareInstance];[recorderstartCameraCustom:parampreview:preview];//开始录制[recorderstartRecord];//设置BGM[recordersetBGM:BGMPath];//开始播放BGM[recorderplayBGMFromTime:beginTimetoTime:_BGMDurationwithBeginNotify:^(NSIntegererrCode){//开始播放}withProgressNotify:^(NSIntegerprogressMS,NSIntegerdurationMS){//播放进度}andCompleteNotify:^(NSIntegererrCode){//播放结束}];//调用pauseRecord后会生成一段视频,视频可以在T
文章导读相信很多初学Go开发的同学,或者在面试过程中都会遇到这样一个问题。Go中的函数传参是值传递还是引用传递。在这个问题上有的同学会有一个错误的意识。如果传递的值,则是值传递;如果传递的是指针,则是引用传递。其实在Go中不管是传递指针还是传递值都是属于值传递。今天本文就来分享一下为什么是这样的。代码演示值传递首先我们定义一个main函数和run1函数,在run1函数中我们交换变量a、b的值。funcrun1(a,bint){ fmt.Println("run1->交换前地址","a",&a,"b",&b) a,b=b,a fmt.Println("run1->","a",a,"b",b) fmt.Println("run1->交换后地址","a",&a,"b",&b) } funcmain(){ a,b:=10,20 fmt.Println("m
说在开头 因公司需求,为减少工作成本,需采集一些店铺的数据,并且需插入线上数据库。 采集思路 HTML代码分析神器(HtmlAgilityPack),其次就是分析阿里巴巴的店铺数据规则。我这里的思路是,先在搜索栏根据关键词和地区搜索,然后根据结果分析出店铺的URL。再根据店铺的URL进去店铺,找到“所有分类页”,解析所有类目,再根据类目URL获取该类目下的产品数据。找到产品URL后,进入到产品页面,解析需要的产品信息,这是我个人的采集思路。下面介绍下每个步骤需要重点注意的地方。 1、分析店铺URL 先上图 URL规则为:http://s.1688.com/company/company_search.htm?keywords={搜索关键词}&province={所在地区}&pageSize=30&sortType=pop&beginPage=1 keywords、province都为汉字,需采用GBK编码(阿里都是GBK编码),然后传入URL中,beginPage为页码,这里必须为1,如果手动修改此参数,将触发阿里的安全验证。其实
D-GridComponents 在一个100*100的网格图上染色,问黑格四连通块的个数为A,白格四连通块的个数为B的一种构造方案?(A,B<=500) 将整个平面分成50*100的两部分,分别以黑白为背景,一块背景算一个连通块,然后在一种背景上用另一种颜色上去点彩,连通块大小为1,无八连通。 1#include<bits/stdc++.h> 2usingnamespacestd; 3inta,b; 4intmain() 5{ 6scanf("%d%d",&a,&b); 7a--;b--; 8puts("100100"); 9for(inti=1;i<=50;i++) 10{ 11for(intj=1;j<=100;j++) 12if(i%2==0&&j%2==0&&a>0)printf("."),a--; 13elseprintf("#"); 14puts(""); 15} 16for(inti=1;i<=50;i++) 17{ 18for(intj=1;j<=100;j++) 19
html: <divv-for="(data,index)inmodel.listParam":key="index"> <el-col:span="12"> <el-form-item:label="data.label1":prop="'listParam.'+index+'.subsystemCode'":rules="rule1"> <el-selectv-model="data.subsystemCode":disabled="isaddAble"style="width:100%"@change="changeProject(data.subsystemCode,index)"> <el-optionv-for="(v,i)inscope":key="v.code+i":label="v.name":value="v.code"></el-option><!--这里vule不能是一个对象的,会导致选每一个都是全选--> </el-select> </el-form-ite
前文连接,讲了es是如何启动swoole服务的。 里面有一个工具类TableManager。这个类为了处理进程间数据共享。是对swoole_table的一层封装swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。 TableManager主要做了下面几件事add方法如果$list数组中有这个表名($name是一个表名或者叫做集合名),就初始化swoole_table,然后配置的字段类型数组进行创建 if(!isset($this->list[$name])){ $table=newTable($size); foreach($columnsas$column=>$item){ $table->column($column,$item['type'],$item['size']); } $table->create(); $this->list[$name]=$table; }复制 get方法直接返回swoole_table的实例。 使用的地方有很多前文提到的在系统设置Cache组件Ca
12.单元测试 12.1引入 在我们工作中有时需要去确认一个函数或者一个模块的结果是否正确,如: 12.2传统的方法解决问题 在main函数中调用addUpper函数,看看实际输出结果是否和预期的结果一致,如果结果一致则说名函数正确,否则函数有错误, 代码实现: 这种方法的缺点: 1)不方便,在main()函数中调用,这样就需要去修改main函数,如果项目正在运行,就不可能去停止项目 2)不利于管理,当我们测试多个函数或者模块时,都需要我们写在main函数,不利于管理和清晰我们的思路 12.3单元测试 12.3.1基本介绍 Go语言自带一个轻量级的测试框架testing和自带的gotest命令来实现单元测试和性能测试,testing框架和其他语言中的框架类似,可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例。 通过单元测试用例,可以解决如下问题: 1)确保每个函数是可以运行的,且运行结果是正确的。 2)确保写出来的代码性能是好的 3)单元测试能及早的发现程序设计或者实现的逻辑错误,使问题及早暴露,
Card类 packagecom.company; publicclassCard{ privateStringcolor; privateIntegervalue; publicStringgetColor(){ returncolor; } publicvoidsetColor(Stringcolor){ this.color=color; } publicIntegergetValue(){ returnvalue; } publicvoidsetValue(Integervalue){ this.value=value; } publicStringToString() { StringstrValue=""; switch(value) { case1: { strValue="A"; break; } case11: { strValue="J"; break; } case12: { strValue="Q"; break; } case13: { strValue="K"; break; } default: strValue=value.toString(
一、软件过程模型怎么选择?有哪些标准,虽然课本上有列出优缺点和各自特点和大概的适用范围,但是具体的还是分不清。有的模型很类似,比如原型模型和增量模型,在选择的时候要怎样区分它们,选择某一个而不是另一个?(1.4 软件过程模型) 二、开发一个软件的时候,开始只是一个小的设计,所以选择了相应的模型,但是到后面越做越大,是要放弃原有的模型,还是继续使用?(第一章) 三、和第一个问题很相似,设计的时候,对于不同的设计模型要具体怎样的区分?实际操作过程中可不可以结合起来使用?(3.2 软件体系结构设计) 四、软件测试原则第一条,应尽早地和不断地进行测试。这里的尽早是指在测试阶段的尽早还是整个开发过程中尽早?如果是后者,那跟前面选择的过程模型是不是会有一定的冲突?(6.1.3 软件测试原则) 五、封装好了之后如果有一部分的东西需要跟以前的不一样,但是以前封装的东西也有用,是要重新封装一个新的,还是在使用的时候进行局部的重定义或修改?(7.2 面形对象的基本概念——封装性)
流程图: 第一步: 注:初始化蓝牙(并判断蓝牙是否已开启) openBluetoothAdapter(){//可以做开始初始化蓝牙的触发按钮 //开始前建议先关闭蓝牙模块 this.closeBLEConnection();//断开与低功耗蓝牙设备的连接 this.stopBluetoothDevicesDiscovery();//停止搜寻附近的蓝牙外围设备 this.closeBluetoothAdapter();//关闭蓝牙模块 wx.openBluetoothAdapter({ success:(res)=>{ //成功=》开始搜寻附近的蓝牙外围设备 this.startBluetoothDevicesDiscovery() }, fail:(res)=>{ if(res.errCode===10001){ wx.showToast({ title:'请打开蓝牙定位', icon:'none', duration:2500//持续的时间 }); this.jshu(); //监听蓝牙适配器状态变化事件 wx.onBluetoo