tag 标签: stm32f

相关博文
  • 2022-3-4 14:56
    1 次阅读|
    0 个评论
    ST是MCU领域当之无愧的大佬,而ST最经典的MCU无疑就是STM32F103了。由于收到市场热捧,疫情影响,加上这两年被大量囤货,目前STM32F103CB/RB系列的价格被炒到了天价,真可谓是一芯难求。 针对这个契机,国内许多MCU厂家趁机推出了与ST兼容的MCU。比如GD、灵动微、极海、中国移动等等。今天,我们以STM32F103CBT6为例,看看中国移动自主研发的MCU与CM32M101A与STM32F103系列的兼容性情况。 一、资源对比 首先我们来看看中移子公司芯昇科技的资源情况: 32 bit ARM Cortex-M4F内核 工作主频108MHz Flash为128KB SRAM为 32KB 1个12bit 5Msps ADC,合计16路通道 工作电压、温度分别为:1.8V~3.6V、-40°C ~ 105°C 通信串口:2*IIC,2*SPI,3*USART,1*CAN等 支持浮点运算和DSP指令内置1个12bit 5Msps ADC,2路独立轨到轨运算放大器,2个高速比较器 支持多达24通道电容式触摸按键 内置一个无磁模块 内置多达320段的Segment LCD驱动 芯昇科技MCU选型表 STM32F103CBT6资源情况: Cortex-M3内核 工作主频72 MHz Flash为64K SRAM为20K 2个12bit ADC合计16路通道 工作电压、温度分别为:2V~3.6V、-40°C ~ 85°C 通信串口:2*IIC,2*SPI,3*USART,1*CAN ST选型表 二、硬件对比: 从两者引脚分布来看,两者只有一个脚位不同。 芯昇科技MCU的1号位为VLCD,ST的1号位为VDD。如果需要VBAT功能的话,那么使用芯昇科技的MCU需要通过增设外部电路来解决。 三、总结: 综合来看,芯昇科技CM32M101A在资源上比STM32F103CBT6要丰富的多,而硬件上基本也能完全兼容。 在目前缺芯的背景下,采用芯昇科技CM32M101A去替代STM32F103CBT6也是一个不错的选择。
  • 热度 12
    2014-10-13 15:54
    1124 次阅读|
    0 个评论
       STM32学习才算是刚刚起步吧,最近比较忙,在断断续续中不选学习。    刚才大部分文字已经打完了,可是网页出了故障,全没有了。真属不幸。没关系,字随着思路还在飘荡。这里我就介绍下自己创建的工程样子吧。怎么创建工程,网上资料漫天飞舞,我也才刚刚学,没有那样的资本独树一帜。只是分大家分享下我对库文件的分类罢了。    STM32学习,省去必须对寄存器一位一位研究的麻烦,ST公司为其开发出了库。调用库函数,让开发变得跟软件开发一样,主要变成了函数的调用。对于这个库的使用,不一样的人有着不一样的使用习惯,有着不一样的认知过程。就网上的资料,如原子的,野火的,神舟王的,以及李想,刘凯,朱兆祺等老师们的使用方式,虽基本类似,但是还是有细微差别的。    我分类方式,如附件中图所示。虽不是最好,但是我觉得这样对文件的分类还是很清楚的。C_inc中是一些系统必要的头文件,如core_cm3.h 。C_src中是系统C文件,如system_stm32f2xx.c。Start中是启动文件。inc中为调用外设的库函数头文件,src中为外设的库函数C文件,List中为编译出的一些文件。Output中为编译输出的一些俄文件。U_inc中为自定义的一些头文件,以及中断用的头文件stm32f2xx_it.h文件。U_sre中为自定义的一些C文件以及中断用的C文件 stm32f2xx_it.c 。User中为main.c文件和工程创建产生的一些文件。     或许有人会认为这样太繁琐了,分的太细没必要。我只能说,自己觉得还是可以吧。创建一次这样的模板,以后直接用就可以了,不用再去创建了。这样回顾自己的工程文件时,应该可以更清楚,便捷的找到需要的关键文件。    每个人习惯不同,认知方式不同,适合自己的,才是最好的。在学习中进步,在进步中分享快乐与感知。    学习进行时,开启属于自己的程序之旅。    
  • 热度 22
    2014-6-6 17:09
    1525 次阅读|
    3 个评论
    初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题。出现如下警告或错误提示:   warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));   这时候我们需要在“Target Options” 中的“C/C++”选项卡中如图-2所示红框中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。这样才能使编顺利通过。 图-2   知其然了,我们还得知其所以然。下面就听Herison给大家一一道来。我们知道,程序的执行是从“main.c”文件开始的,其中必须包含有头文件“stm32f10x.h”。我们打开“stm32f10x.h”,按下“Ctrl+F”键,查找USE_STDPERIPH_DRIVER,在“Find What”栏中输入“USE_STDPERIPH_DRIVER”。如图-3所示。点击“Find Next”,出现“USE_STDPERIPH_DRIVER”对应的代码行,重复上边操作三次,第三次的时候我们能在第8296-8298行找到如图-4所示代码段。 图-3 图-4     这段代码的意思是,只有用预编译指令预定义了“USE_STDPERIPH_DRIVER”,才会将"stm32f10x_conf.h"包含进“stm32f10x.h”中,从而被"main.c"用到。这就解释了,为什么我们没有在“main.c”中包含"stm32f10x_conf.h",而在编译之后却被包含进了"main.c"中,出现如图-5所示的情况。        "stm32f10x_conf.h"文件相当于一个开关文件,如果要用到STM32固件库驱动标准外设,则外设驱动头文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我们通过代码#include "stm32f10x_gpio.h"来实现这个操作。 图-5   说到这儿估计大家已经对“USE_STDPERIPH_DRIVER”的来龙去脉有个清晰的认识了吧?其实单从字面意思理解就是“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。至于加入的“STM32F10X_HD“同样能在文件”stm32f10x.h“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。
相关资源