跳转到主要内容

弄清STM32固件版权常见问题,避免不必要的麻烦!

cathy /

现在大家都开始重视版权的问题了,相信有不少电子工程师都收到了Altium公司的律师函。

今天就来说说STM32固件版权的问题:

Q:STM32固件是否包含ST版权资料?
A:是。

Q:我是否能在非ST微处理器上使用STM32固件?
A:除非拥有特许证书许可,STM32固件只能配合ST微处理器使用。

Q:我是否能在非ST微处理器上使用改写过的STM32固件?
A:除非拥有特许证书许可,改写过的STM32固件只能配合ST微处理器使用。

Q:我能改写并以我个人的自有版权再传播STM32固件吗?
A:除非拥有特许证书许可,经改写的STM32固件的再传播必须取得符合许可条件的适用版权声明。

Q:如果我传播或者使用侵犯了ST版权的第三方固件,我要对侵权负责吗?
A:是的,任何人使用或者再销售侵犯ST版权的第三方代码,都要对侵权负责。

Q:如果我从GitHub上下载STM32固件,我可以按自己的意愿自由使用吗?
A:不可以。所有STM32固件的使用,都要遵守许可证书的特殊条款和条件的规定,无论来源。

77条STM32知识,千万不能错过!(二)

cathy 提交于

39、DAC有两个寄存器,一个是DHR(Data HoldingRegister)数据保持寄存器,一个DOR(Data Output Register)数据输出寄存器。

真正起作用的是DOR寄存器,该寄存器把值给数模转换发生单元输出以VREF+为参考电压的电压值。

如果是硬件触发转换,系统将在1个ABP时钟周期后把值给DOR,如果是软件触发转换,时间为3个APB时钟周期。然后,均等待Tsetting时间(Typical为3us,Max为4us)后真正输出电压值。

40、DAC分8位模式和12位模式,其中后者可以选择左右对齐。

41、DMA仲裁器分为软件和硬件两种。软件部分分为4个等级,分别是很高优先级、高优先级、中等、低。硬件部分由通道的大小来决定优先级,越低优先级越高。

42、DMA有一个实时的传输数据量寄存器叫做DMA_CNDTR,最大值为65535,存放的是当前传输所要传输的数据量。当数据量变为0时,表明传输完成。

43、CAN总线(ControllerArea Network)。CAN控制器根据两根线上的电位差来判断总线电平,总线电平又分为显性电平和隐性电平,二者必居其一。

44、CAN总线具有6个特点:

1、多主控制

2、系统若软性

STM32单片机按键电路设计

cathy /

<center><img src="http://mouser.eetrend.com/files/2019-06/wen_zhang_/100043759-72567-d1.p…; alt=“” width="600"></center>

以前GPIO上接的电路都是低电平触发的那种,现在新设计的板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。

你不知道的STM32知识汇总

cathy /

STM32是一种功能比较强大的32位单片机,广泛应用于各种嵌入式设备中,由于它的普及性及丰富的资源,受到广大嵌入式开发者的喜欢,但要想学好用好STM32也并非易事,毕竟,相比8位、16位产品,STM32要复杂得多。

STM32的时钟

<center><img src="http://mouser.eetrend.com/files/2019-03/wen_zhang_/100018174-62457-st.p…; alt=“” width="600"></center>

其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低速时钟(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及独立看门狗使用,图中可以看出高速时钟也可以提供给RTC。内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号.

基于STM32的串口循环队列

cathy 提交于

先说串口,这个应该都知道吧!(不知道的童鞋,先把基本功学好)大部分单片机或者处理器都会带一个或者多个串口,方便进行数据的通信。

那么串口的循环队列是什么?这里以STM32的串口为例,进行解释说明。

假设串口一次只发一个数据,这倒是简单了,每次只对这一个数据进行判断,然后处理相关指令。但现实不会一直都这么美好,很多时候你收到的可能是一大串数据,你要先小心翼翼的把它们存好,然后再依次判断这里面有哪些指令要处理。

<center><img src="http://mouser.eetrend.com/files/2019-02/博客/100017812-60842-st1.png&quot; alt=“” width="600"></center>

假设你定义了一个30个元素的数组a[30],每次串口收到数据都往里面存,存的时候地址加一。这个操作很简单吧,应该是都会的。

【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

cathy 提交于

<strong>STM32的GPIO介绍</strong>

<strong>STM32引脚说明</strong>

GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。

STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟) 中有详细的介绍。

<strong>GPIO基本结构</strong>

每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。

这边的电路图稍微提一下:

如何使用STM32测量频率和占空比?掌握这三个思路就够了!

cathy /

(1)测量脉冲信号频率fo,频率范围为10Hz~2MHz,测量误差的绝对值不大于0.1%。

(2)测量脉冲信号占空比D,测量范围为10%~90%,测量误差的绝对值不大于2%。

使用官方STM32F429 Discovery开发板,主频180MHz,定时器频率90MHz。

<strong>思路一、外部中断

这种方法是很容易想到的,而且对几乎所有MCU都适用(连51都可以)。方法也很简单,声明一个计数变量TIM_cnt,每次一个上升沿/下降沿就进入一次中断,对TIM_cnt++,然后定时统计即可。如果需要占空比,那么就另外用一个定时器统计上升沿、下降沿之间的时间即可。

缺陷显而易见,当频率提高,将会频繁进入中断,占用大量时间。而当频率超过100kHz时,中断程序时间甚至将超过脉冲周期,产生巨大误差。同时更重要的是,想要测量的占空比由于受到中断程序影响,误差将越来越大。

笔者当时第一时间就把这个方案PASS了,没有相关代码(这个代码也很简单)。不过,该方法在频率较低(10kHz以下)时,可以拿来测量频率。在频率更低的情况下,可以拿来测占空比。

<strong>思路二、PWM输入模式</strong>

【精心总结】50条STM32单片机学习笔记

cathy /

1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备

2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf.h专门控制外围器件的配置,也就是开关头文件的作用

3、HSE Osc(High Speed External Oscillator)高速外部晶振,一般为8MHz,HSI RC(High Speed InternalRC)高速内部RC,8MHz

4、LSE Osc(Low Speed External Oscillator)低速外部晶振,一般为32.768KHz,LSI RC(Low Speed InternalRC)低速内部晶振,大概为40KHz左右,提供看门狗时钟和自动唤醒单元时钟源

5、SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL

STM32