电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电子发烧友网>LEDs>LED照明>不可见光应用 - 猴年走进“多彩”的LED世界

不可见光应用 - 猴年走进“多彩”的LED世界

上一页123全文

本文导航

收藏

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论

查看更多

相关推荐

LED产品应用大突破 创意设计盘点

其实除了平常所见毫无亮点的应用外,还有很多别具一格的创意应用,下面带你走进LED另类应用的世界
2014-09-10 09:05:011150

美轮美奂 家居创意LED灯产品

美轮美奂 家居创意LED灯产品,这是一系列创意家居用品LED灯,有了它们,会让我们的生活更加丰富多彩,一起来欣赏下吧。
2011-11-30 17:19:411902

LED——世界未来之光

字。Sharenow说,相当于60W的LED灯泡上市后,Switch相当于75W白炽灯的LED将会在11月上市,100W的模型将在2012年2月份发布。Sharenow 说:“这些灯泡终将改变世界!”
2011-09-23 16:29:14

世界著名的HiFi功放都有哪些?

世界著名的HiFi功放都有哪些?
2022-03-28 11:26:27

走进MEasy的世界:基于STM32MP1的IOT参考设计

`走进MEasy的世界:基于STM32MP1的IOT参考设计 在万物互联快速发展的趋势下,板卡处理器性能、内存大小、接口外设等都是人们非常关心的硬件参数,但是如何让硬件的作用实现它的功能最大化,一套
2020-02-24 15:46:30

走进嵌入式

零基础要怎么样学习嵌入式希望可以通过这一篇帖子让大家走进嵌入式,对嵌入式的学习不再那么陌生。嵌入式Linux工程师的学习需要具备一定的C语言基础,因此面对许多朋友只是在大一或者大二学习过C(还不
2022-02-23 07:29:56

Accessory Shield学习4:多彩LED

学会了如何发声,下来就要开始学如何发光;虽然一开始在按键扫描那章有看到LED闪烁,但,,,,那真的太简单了。本章我们学习高大上的多彩LED。原理大放送:多彩LED又称为RGB灯,内置红(R)、绿(G
2016-03-28 14:49:55

BakeBit - LED-Bar+ Light Sensor,完成外界亮度控制led灯效果

BakeBit - LED-Bar是一个多彩led模块,模块使用了五个内部集成了Ws2812控制芯片的多彩LED,每个LED内部有R、G、B三个发光二极管。Ws2812控制芯片串行读取控制信号,并从
2017-02-21 17:45:01

HBO超现实VR体验带你走进西部世界 年度最期待的情景模式与现实世界的结合!

祝我们逛得开心。  下午2点30分,我舒服地坐在《西部世界》展台的沙发上,服务员走过来,陪我走进这段神秘的虚拟现实体验。她的做法就像是,《西部世界》是真实的存在,而不是电视剧。  她再次与我确认,我
2016-10-24 10:57:50

HarmonyOS IoT首著,走进万物互联的世界

无边际的设备网络,除了手机,还包括平板、电视和海量可穿戴设备。为了让广大技术开发者由浅入深,逐步构建HarmonyOS(鸿蒙操作系统)硬件知识体系,实现IoT设备开发,让鸿蒙系统更快地走进万物互联
2021-06-16 16:45:05

HarmonyOS IoT首著,走进万物互联的世界

无边际的设备网络,除了手机,还包括平板、电视和海量可穿戴设备。为了让广大技术开发者由浅入深,逐步构建HarmonyOS(鸿蒙操作系统)硬件知识体系,实现IoT设备开发,让鸿蒙系统更快地走进万物互联的世界
2021-06-16 17:08:43

PSoC 4试用+第一个项目:PWM控制多彩LED输出

,做了一个LED多彩灯!把我用的文档也分享给大家吧!其实官网上都有!使用心得:总体感觉有很多东西都不需要你自己去写!比如PWM,电路搭建好后它会自动给你生成程序文件!CLOCK也是一样!感觉和STM32
2013-10-18 00:13:45

SH381同步多彩LED驱动集成电路相关资料分享

SH-381它采用DIP-8与SOP-8两种封装形式。是采用CMOS工艺制造的三路多模式多彩同步LED闪光集成电路,配合高亮度红、绿、蓝色发光二极管可产生绚丽多彩的变色光效果。
2021-04-28 06:14:21

labview学习走进盲区,期待您的指点

学习labview断断续续将近一个月了,基础知识都学习了一遍,现在开始看别人的程序以及一些高级编程的书籍,感觉还有好多好多都不懂,就是那种高深点不懂,基础的一看就会的状态。感觉现在的学习走进了盲区,希望高手们结合以前的学习过程指点下在下,感激不尽!
2013-04-06 22:34:13

“数字世界”基本的工作原理

而且可以不依赖人类自身的可以自动运行的数字世界,而计算机则是这个数字世界的基石。随着计算机应用的普及和深入,这个数字世界的能力越来越强大,形式也越来越丰富多彩。所以,计算机的诞生意味着现代意义下完
2020-07-06 08:34:53

《从零开始走进FPGA世界》中的流水灯程序是不是错了啊?

首先clk_design.v 模块产生的使能时钟频率不是10Hz,其次led_display.v 模块的递增方式也无法产生流水灯效果啊?
2015-08-20 09:40:39

【GoKit申请】多彩智能云灯

本帖最后由 andy_wsj 于 2015-4-27 11:31 编辑 项目名称:多彩智能云灯市场观察: wifi联网控制的LED最早的项目查到出现在澳大利亚,是一款比较新颖的产品。 市面常见
2015-04-27 11:26:22

【VEML6040环境颜色检测试用体验】感受多彩世界——Vishay VEML6040 环境颜色检测开发套件评测一

感受多彩世界——Vishay VEML6040 环境颜色检测开发套件评测近日,世平集团推出基于Vishay VEML 6040 ,艺术感超强的环境颜色检测方案。此方案包含了Vishay 公司
2017-03-25 12:41:24

【广东龙芯2K500先锋板试用体验】点亮RGB多彩发光板

LED很相似。1.2 龙芯2K0500开发板龙芯2K0500开发板的IO扩展口上预留了PWM的引脚,具体如下图:这里使用PWM0、PWM1、PWM2三个引脚连接到多彩发光板,连接关系如下:10号针
2023-01-30 19:08:15

什么是“PSoC世界

你好朋友们,我正在张贴一个视频链接,它将简要地介绍什么是“PSoC世界”。http://Visual.CyPress .com /视频库/搜索/PSoC+世界/我想发布许多其他的视频链接,促进
2019-07-24 06:51:32

从零开始走进FPGA-例程汇总

从零开始走进FPGA-例程汇总
2013-08-27 10:03:03

从零开始走进FPGA世界

从零开始走进FPGA世界
2020-03-12 13:11:17

从零开始走进FPGA世界 V2.0【转】

` 本帖最后由 普莱斯队长 于 2013-3-3 09:07 编辑 从零开始走进FPGA,总结我大学FPGA所学,并不能把您带到多高的深度,只为将您带进FPGA世界,希望能给你一点帮助,有
2012-08-10 11:03:44

你好,放大器 ~带你走进运放的世界 快速上手设计运放电路

你好,放大器 ~带你走进运放的世界 快速上手设计运放电路
2015-11-20 21:19:58

分析一线公司当前产品,看LED世界走向

分析一线公司当前产品,看LED世界走向
2021-06-01 07:08:32

厦门多彩光电子科技有限公司招聘LED技术员

针对客户提出的各参数做出相应的配比; 3.对新的原材料进行试验,降低成本等!职位要求1、国家重点大学理工科专业毕业或有LED行业相关工作经验一年以上; 2、能吃苦耐劳,为人诚肯、好学;厦门多彩
2013-09-24 09:55:38

带你走进STM32的世界

STM32F10xx时钟系统框图:时钟是整个系统的脉搏下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现的安全设置。特别注意:图的右边,输出定时器时钟之前有一个乘法器,它的操作不是由程序控制的,是由硬件根据前一级的APB预分频器的输出自动选择,当APB预分频器的分频因子为1时,这个乘法器无作用;当APB预分频器的分频因子大于1时,这个乘法器做倍频操作,即将APB预分频器输出的频率乘2,这样可以保证定时器可以得到最高的72MHz时钟脉冲。STM32上很多管脚功能可以重新映射STM32上有很多I/O口,也有很多的内置外设,为了节省引出管脚,这些内置外设都是与I/O口共用引出管脚,ST称其为I/O管脚的复用功能,相信这点大家都很清楚,因为基本上所有单片机都是这么做的。但不知有多少人知道,很多复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变的。这一功能的直接好处是,PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。复用功能引出脚的重映射功能所带来的潜在好处是,在你不需要同时使用多个复用功能时,虚拟地增加复用功能的数量。例如,STM32上最多有3个USART接口,当你需要更多UART接口而又不需要同时使用它们时,可以通过这个重映射功能实现更多的UART接口。下述复用功能的引出脚具有重映射功能:- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口- CAN模块- JTAG调试接口- 大部分定时器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口详细内容请看STM32的技术参考手册。请务必记住:如果使用了任意一种重映射功能,在初始化和使用之前,一定要打开AFIO时钟。下图示出了部分复用功能引出脚的重映射结果:【演示实例】一个在EK-STM32F板子上的RTC作为calender的例子硬件连接:串口线连至板子的UART-0端口。超级终端设置为:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑这个程序时,进入时间配置。根据超级终端上的提示,一次输入年,月,日,时,分,秒(1月就输入01,10月直接输入10;同理3号就输入03)随后当前的时间就显示到了超级终端上,并且每秒刷新。没有断电的情况下再跑这个程序,由于看到bake up区域有被设置过时间的标志,不再进入时间设置阶段,而是直接到时间显示间断,在超级终端上,每秒刷新。当然如果在EK-STM32F板子上将Vbat和电池相接,具体就是:将红色的电源跳线帽中的从下往上数的第5个取下,从原来的水平放置改成竖直放置(和上面的VBAT相连)。就算断电,只要再上电,看到back up区域中的记号,一样直接进入时间显示。因为断电后,back up区域由电池供电,其中记录的记号不会由于系统掉电而消失。【演示实例】使用EK-STM32F板测量STM32的功耗这个例子演示了如何使用EK-STM32F开发评估板测量STM32F103VBT6在各种模式下的功耗。例子中演示了如何进入STM32的各种模式(RUN、SLEEP、STOP、STANDBY),使用这个例子您可以通过EK-STM32F板上的红色跳线(VDD、VREF+和VDDA)测量功耗。本实例首先通过UART与Windows的Hyperterminal通信,用户可以选择需要进入的功耗模式,然后这个例程把用户选好的配置存到后备寄存器,再次复位后STM32将进入之前选定的模式。附件包中包含了一个说明文件,详细说明了如何设置板上的跳线和操作的过程。STM32 GPIO的十大优越功能综述前几天Hotpower邀请大家讨论一下GPIO的功能、性能和优缺点(STM32的GPIO很强大~~~),等了几天没见太多人发言,但综合来看提到了3点:1)真双向IO,2)速度快,3)寄存器功能重复。关于第3点有说好,有说多余的,见仁见智。下面我就在做个抛砖引玉,根据ST手册上的内容,简单地综述一下GPIO的功能:一、共有8种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 模拟输入5. 开漏输出——(此模式可实现hotpower说的真双向IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。三、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。四、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。五、所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。六、大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD-1.3V时,可以提供或吸收20mA电流。七、具有独立的唤醒I/O口。八、很多I/O口的复用功能可以重新映射,见:你知道吗?STM32上很多管脚功能可以重新映射。九、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。十、输出模式下输入寄存器依然有效,在开漏配置模式下实现真正的双向I/O功能。STM32内置参照电压的使用每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17。根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V。这个电压基本不随外部供电电压的变化而变化。不少人把这个参照电压与ADC的参考电压混淆。ADC的参考电压都是通过Vref+提供的。100脚以上的型号,Vref+引到了片外,引脚名称为Vref+;64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。在ADC的外部参考电压波动,或因为Vref+在芯片内部与VCC相连而VCC变化的情况下,如果对于ADC测量的准确性要求不高时,可以使用这个内部参照电压得到ADC测量的电压值。具体方法是在测量某个通道的电压值之前,先读出参照电压的ADC测量数值,记为ADrefint;再读出要测量通道的ADC转换数值,记为ADchx;则要测量的电压为:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint为参照电压=1.20V。上述方法在使用内置温度传感器对因为温度变化,对系统参数进行补偿时就十分有效。STM32的ADC输入通道配置STM32中最多有3个ADC模块,每个模块对应的通道不完全重叠。下图是STM32F103CDE数据手册中的总框图的左下角,图中可以看出有8个外部ADC管脚分别接到了3个ADC模块,有8个外部ADC管脚只分别接到了2个ADC模块,还有5个外部ADC管脚只接到了ADC3模块,这样总共是21个通道。
2017-08-07 14:19:52

带你走进STM32的世界

STM32F10xx时钟系统框图:时钟是整个系统的脉搏下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现的安全设置。特别注意:图的右边,输出定时器时钟之前有一个乘法器,它的操作不是由程序控制的,是由硬件根据前一级的APB预分频器的输出自动选择,当APB预分频器的分频因子为1时,这个乘法器无作用;当APB预分频器的分频因子大于1时,这个乘法器做倍频操作,即将APB预分频器输出的频率乘2,这样可以保证定时器可以得到最高的72MHz时钟脉冲。STM32上很多管脚功能可以重新映射STM32上有很多I/O口,也有很多的内置外设,为了节省引出管脚,这些内置外设都是与I/O口共用引出管脚,ST称其为I/O管脚的复用功能,相信这点大家都很清楚,因为基本上所有单片机都是这么做的。但不知有多少人知道,很多复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变的。这一功能的直接好处是,PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。复用功能引出脚的重映射功能所带来的潜在好处是,在你不需要同时使用多个复用功能时,虚拟地增加复用功能的数量。例如,STM32上最多有3个USART接口,当你需要更多UART接口而又不需要同时使用它们时,可以通过这个重映射功能实现更多的UART接口。下述复用功能的引出脚具有重映射功能:- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口- CAN模块- JTAG调试接口- 大部分定时器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口详细内容请看STM32的技术参考手册。请务必记住:如果使用了任意一种重映射功能,在初始化和使用之前,一定要打开AFIO时钟。下图示出了部分复用功能引出脚的重映射结果:【演示实例】一个在EK-STM32F板子上的RTC作为calender的例子硬件连接:串口线连至板子的UART-0端口。超级终端设置为:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑这个程序时,进入时间配置。根据超级终端上的提示,一次输入年,月,日,时,分,秒(1月就输入01,10月直接输入10;同理3号就输入03)随后当前的时间就显示到了超级终端上,并且每秒刷新。没有断电的情况下再跑这个程序,由于看到bake up区域有被设置过时间的标志,不再进入时间设置阶段,而是直接到时间显示间断,在超级终端上,每秒刷新。当然如果在EK-STM32F板子上将Vbat和电池相接,具体就是:将红色的电源跳线帽中的从下往上数的第5个取下,从原来的水平放置改成竖直放置(和上面的VBAT相连)。就算断电,只要再上电,看到back up区域中的记号,一样直接进入时间显示。因为断电后,back up区域由电池供电,其中记录的记号不会由于系统掉电而消失。【演示实例】使用EK-STM32F板测量STM32的功耗这个例子演示了如何使用EK-STM32F开发评估板测量STM32F103VBT6在各种模式下的功耗。例子中演示了如何进入STM32的各种模式(RUN、SLEEP、STOP、STANDBY),使用这个例子您可以通过EK-STM32F板上的红色跳线(VDD、VREF+和VDDA)测量功耗。本实例首先通过UART与Windows的Hyperterminal通信,用户可以选择需要进入的功耗模式,然后这个例程把用户选好的配置存到后备寄存器,再次复位后STM32将进入之前选定的模式。附件包中包含了一个说明文件,详细说明了如何设置板上的跳线和操作的过程。STM32 GPIO的十大优越功能综述前几天Hotpower邀请大家讨论一下GPIO的功能、性能和优缺点(STM32的GPIO很强大~~~),等了几天没见太多人发言,但综合来看提到了3点:1)真双向IO,2)速度快,3)寄存器功能重复。关于第3点有说好,有说多余的,见仁见智。下面我就在做个抛砖引玉,根据ST手册上的内容,简单地综述一下GPIO的功能:一、共有8种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 模拟输入5. 开漏输出——(此模式可实现hotpower说的真双向IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。三、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。四、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。五、所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。六、大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD-1.3V时,可以提供或吸收20mA电流。七、具有独立的唤醒I/O口。八、很多I/O口的复用功能可以重新映射,见:你知道吗?STM32上很多管脚功能可以重新映射。九、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。十、输出模式下输入寄存器依然有效,在开漏配置模式下实现真正的双向I/O功能。STM32内置参照电压的使用每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17。根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V。这个电压基本不随外部供电电压的变化而变化。不少人把这个参照电压与ADC的参考电压混淆。ADC的参考电压都是通过Vref+提供的。100脚以上的型号,Vref+引到了片外,引脚名称为Vref+;64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。在ADC的外部参考电压波动,或因为Vref+在芯片内部与VCC相连而VCC变化的情况下,如果对于ADC测量的准确性要求不高时,可以使用这个内部参照电压得到ADC测量的电压值。具体方法是在测量某个通道的电压值之前,先读出参照电压的ADC测量数值,记为ADrefint;再读出要测量通道的ADC转换数值,记为ADchx;则要测量的电压为:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint为参照电压=1.20V。上述方法在使用内置温度传感器对因为温度变化,对系统参数进行补偿时就十分有效。STM32的ADC输入通道配置STM32中最多有3个ADC模块,每个模块对应的通道不完全重叠。下图是STM32F103CDE数据手册中的总框图的左下角,图中可以看出有8个外部ADC管脚分别接到了3个ADC模块,有8个外部ADC管脚只分别接到了2个ADC模块,还有5个外部ADC管脚只接到了ADC3模块,这样总共是21个通道。下表是这些ADC管脚与每个ADC模块的对应关系,表中可以看出ADC1还有2个内部通道,分别接到内部的温度传感器和内部的参照电压: 关于STM32 ADC速度的问题STM32F103xx系列称为增强型产品,增强型产品的最高时钟频率可以达到72MHz。增强型产品的英文名称为Performance Line。STM32F101xx系列称为基本型产品,基本型产品的最高时钟频率可以达到36MHz。基本型产品的英文名称为Access Line。根据设计,当ADC模块的频率为14MHz时,可以达到ADC的最快采样转换速度。要得到14MHz的ADC频率,就要求SYSCLK的频率是14MHz的倍数,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;对于基本型产品14MHz和28MHz处于它的最大允许频率范围内;对于增强型产品,14MHz、28MHz、42MHz、56MHz和70MHz几种频率都在它的最大允许频率范围内,但因为ADC预分频器的分频系数只有2、4、6、8这几个,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC转换速度,在增强型产品上能用的最快SYSCLK频率是56MHz。ADC的速度由2个参数决定,它是采样时间和转换时间之和: 即:TCONV = 采样时间 + 12.5个ADC时钟周期在STM32中,ADC的采样时间是由用户程序在一组预定的数值中选择,按照ADC的时钟周期计算,共有8种选择: 1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5个时钟周期的采样时间计算,最短的TCONV等于14个时钟周期,如果ADC的时钟频率是14MHz,则ADC的速度为每秒100万次。注意:当ADC的时钟频率超过14MHz时,ADC的精度将会显著下降。STM32内置CRC模块的使用所有的STM32芯片都内置了一个硬件的CRC计算模块,可以很方便地应用到需要进行通信的程序中,这个CRC计算模块使用常见的、在以太网中使用的计算多项式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1写成16进制就是:0x04C11DB7使用这个内置CRC模块的方法非常简单,既首先复位CRC模块(设置CRC_CR=0x01),这个操作把CRC计算的余数初始化为0xFFFFFFFF;然后把要计算的数据按每32位分割为一组数据字,并逐个地把这组数据字写入CRC_DR寄存器(既下图中的绿色框),写完所有的数据字后,就可以从CRC_DR寄存器(既下图中的兰色框)读出计算的结果。注意:虽然读写操作都是针对CRC_DR寄存器,但实际上是访问的不同物理寄存器。有几点需要说明:1)上述算法中变量CRC,在每次循环结束包含了计算的余数,它始终是向左移位(既从最低位向最高位移动),溢出的数据位被丢弃。2)输入的数据始终是以32位为单位,如果原始数据少于32位,需要在低位补0,当然也可以高位补0。3)假定输入的DWORD数组中每个分量是按小端存储。4)输入数据是按照最高位最先计算,最低位最后计算的顺序进行。例如:如果输入0x44434241,内存中按字节存放的顺序是:0x41, 0x42, 0x43, 0x44。计算的结果是:0xCF534AE1如果输入0x41424344,内存中按字节存放的顺序是:0x44, 0x43, 0x42, 0x41。计算的结果是:0xABCF9A63STM32中定时器的时钟源STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。STM32中外部中断与外部事件这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断“挂起请求寄存器”,最后经过编号4的与门输出到NVIC中断控制器;在这个通道上有4个控制选项,外部的信号首先经过边沿检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。接下来是编号3的或门,这个或门的另一个输入是“软件中断/事件寄存器”,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,既当“软件中断/事件寄存器”的对应位为“1”时,不管外部信号如何,编号3的或门都会输出有效信号。一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为“0”,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器把一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。在这张图上我们也可以知道,从外部激励信号来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向CPU产生中断请求,另一路信号会向其它功能模块发送脉冲触发信号,其它功能模块如何相应这个触发信号,则由对应的模块自己决定。在图上部的APB总线和外设模块接口,是每一个功能模块都有的部分,CPU通过这样的接口访问各个功能模块,这里就不再赘述了。STM32的USART发送数据时如何使用TXE和TC标志在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器(下图中阴影部分的TDR),另一个是程序看不到的移位寄存器(下图中阴影部分Transmit Shift Register)。对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束;对照下图,当TDR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输数据,但因为TDR已经变空,程序可以把下一个要发送的字节(操作USART_DR)写入TDR中,而不必等到移位寄存器中所有位发送结束,所有位发送结束时(送出停止位后)硬件会设置TC标志。另一方面,在刚刚初始化好USART还没有发送任何数据时,也会有TXE标志,因为这时发送数据寄存器是空的。TXEIE和TCIE的意义很简单,TXEIE允许在TXE标志为'1'时产生中断,而TCIE允许在TC标志为'1'时产生中断。至于什么时候使用哪个标志,需要根据你的需要自己决定。但我认为TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。STM32设置了很多非常有用和灵活的控制和状态位,只要你很好地掌握了它们的用法,可以让你的应用更加精确和高效。南宁STM32技术实训提升QQ2532176025这是STM32技术参考手册中的一页:在STM32中如何配置片内外设使用的IO端口首先,一个外设经过配置输入的时钟和初始化后即被激活(开启)。如果需要使用该外设的输入输出管脚,则需要配置相应的GPIO端口;否则该外设对应的输入输出管脚可以做普通GPIO管脚使用。
2016-09-14 10:58:12

带你走进STM32的世界

STM32F10xx时钟系统框图:时钟是整个系统的脉搏下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现的安全设置。特别注意:图的右边,输出定时器时钟之前有一个乘法器,它的操作不是由程序控制的,是由硬件根据前一级的APB预分频器的输出自动选择,当APB预分频器的分频因子为1时,这个乘法器无作用;当APB预分频器的分频因子大于1时,这个乘法器做倍频操作,即将APB预分频器输出的频率乘2,这样可以保证定时器可以得到最高的72MHz时钟脉冲。STM32上很多管脚功能可以重新映射STM32上有很多I/O口,也有很多的内置外设,为了节省引出管脚,这些内置外设都是与I/O口共用引出管脚,ST称其为I/O管脚的复用功能,相信这点大家都很清楚,因为基本上所有单片机都是这么做的。但不知有多少人知道,很多复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变的。这一功能的直接好处是,PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。复用功能引出脚的重映射功能所带来的潜在好处是,在你不需要同时使用多个复用功能时,虚拟地增加复用功能的数量。例如,STM32上最多有3个USART接口,当你需要更多UART接口而又不需要同时使用它们时,可以通过这个重映射功能实现更多的UART接口。下述复用功能的引出脚具有重映射功能:- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口- CAN模块- JTAG调试接口- 大部分定时器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口详细内容请看STM32的技术参考手册。请务必记住:如果使用了任意一种重映射功能,在初始化和使用之前,一定要打开AFIO时钟。下图示出了部分复用功能引出脚的重映射结果:【演示实例】一个在EK-STM32F板子上的RTC作为calender的例子硬件连接:串口线连至板子的UART-0端口。超级终端设置为:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑这个程序时,进入时间配置。根据超级终端上的提示,一次输入年,月,日,时,分,秒(1月就输入01,10月直接输入10;同理3号就输入03)随后当前的时间就显示到了超级终端上,并且每秒刷新。没有断电的情况下再跑这个程序,由于看到bake up区域有被设置过时间的标志,不再进入时间设置阶段,而是直接到时间显示间断,在超级终端上,每秒刷新。当然如果在EK-STM32F板子上将Vbat和电池相接,具体就是:将红色的电源跳线帽中的从下往上数的第5个取下,从原来的水平放置改成竖直放置(和上面的VBAT相连)。就算断电,只要再上电,看到back up区域中的记号,一样直接进入时间显示。因为断电后,back up区域由电池供电,其中记录的记号不会由于系统掉电而消失。【演示实例】使用EK-STM32F板测量STM32的功耗这个例子演示了如何使用EK-STM32F开发评估板测量STM32F103VBT6在各种模式下的功耗。例子中演示了如何进入STM32的各种模式(RUN、SLEEP、STOP、STANDBY),使用这个例子您可以通过EK-STM32F板上的红色跳线(VDD、VREF+和VDDA)测量功耗。本实例首先通过UART与Windows的Hyperterminal通信,用户可以选择需要进入的功耗模式,然后这个例程把用户选好的配置存到后备寄存器,再次复位后STM32将进入之前选定的模式。附件包中包含了一个说明文件,详细说明了如何设置板上的跳线和操作的过程。STM32 GPIO的十大优越功能综述前几天Hotpower邀请大家讨论一下GPIO的功能、性能和优缺点(STM32的GPIO很强大~~~),等了几天没见太多人发言,但综合来看提到了3点:1)真双向IO,2)速度快,3)寄存器功能重复。关于第3点有说好,有说多余的,见仁见智。下面我就在做个抛砖引玉,根据ST手册上的内容,简单地综述一下GPIO的功能:一、共有8种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 模拟输入5. 开漏输出——(此模式可实现hotpower说的真双向IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。三、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。四、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。五、所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。六、大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD-1.3V时,可以提供或吸收20mA电流。七、具有独立的唤醒I/O口。八、很多I/O口的复用功能可以重新映射,见:你知道吗?STM32上很多管脚功能可以重新映射。九、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。十、输出模式下输入寄存器依然有效,在开漏配置模式下实现真正的双向I/O功能。STM32内置参照电压的使用每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17。根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V。这个电压基本不随外部供电电压的变化而变化。不少人把这个参照电压与ADC的参考电压混淆。ADC的参考电压都是通过Vref+提供的。100脚以上的型号,Vref+引到了片外,引脚名称为Vref+;64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。在ADC的外部参考电压波动,或因为Vref+在芯片内部与VCC相连而VCC变化的情况下,如果对于ADC测量的准确性要求不高时,可以使用这个内部参照电压得到ADC测量的电压值。具体方法是在测量某个通道的电压值之前,先读出参照电压的ADC测量数值,记为ADrefint;再读出要测量通道的ADC转换数值,记为ADchx;则要测量的电压为:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint为参照电压=1.20V。上述方法在使用内置温度传感器对因为温度变化,对系统参数进行补偿时就十分有效。STM32的ADC输入通道配置STM32中最多有3个ADC模块,每个模块对应的通道不完全重叠。下图是STM32F103CDE数据手册中的总框图的左下角,图中可以看出有8个外部ADC管脚分别接到了3个ADC模块,有8个外部ADC管脚只分别接到了2个ADC模块,还有5个外部ADC管脚只接到了ADC3模块,这样总共是21个通道。下表是这些ADC管脚与每个ADC模块的对应关系,表中可以看出ADC1还有2个内部通道,分别接到内部的温度传感器和内部的参照电压: 关于STM32 ADC速度的问题STM32F103xx系列称为增强型产品,增强型产品的最高时钟频率可以达到72MHz。增强型产品的英文名称为Performance Line。STM32F101xx系列称为基本型产品,基本型产品的最高时钟频率可以达到36MHz。基本型产品的英文名称为Access Line。根据设计,当ADC模块的频率为14MHz时,可以达到ADC的最快采样转换速度。要得到14MHz的ADC频率,就要求SYSCLK的频率是14MHz的倍数,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;对于基本型产品14MHz和28MHz处于它的最大允许频率范围内;对于增强型产品,14MHz、28MHz、42MHz、56MHz和70MHz几种频率都在它的最大允许频率范围内,但因为ADC预分频器的分频系数只有2、4、6、8这几个,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC转换速度,在增强型产品上能用的最快SYSCLK频率是56MHz。ADC的速度由2个参数决定,它是采样时间和转换时间之和: 即:TCONV = 采样时间 + 12.5个ADC时钟周期在STM32中,ADC的采样时间是由用户程序在一组预定的数值中选择,按照ADC的时钟周期计算,共有8种选择:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5个时钟周期的采样时间计算,最短的TCONV等于14个时钟周期,如果ADC的时钟频率是14MHz,则ADC的速度为每秒100万次。注意:当ADC的时钟频率超过14MHz时,ADC的精度将会显著下降。STM32内置CRC模块的使用所有的STM32芯片都内置了一个硬件的CRC计算模块,可以很方便地应用到需要进行通信的程序中,这个CRC计算模块使用常见的、在以太网中使用的计算多项式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1写成16进制就是:0x04C11DB7使用这个内置CRC模块的方法非常简单,既首先复位CRC模块(设置CRC_CR=0x01),这个操作把CRC计算的余数初始化为0xFFFFFFFF;然后把要计算的数据按每32位分割为一组数据字,并逐个地把这组数据字写入CRC_DR寄存器(既下图中的绿色框),写完所有的数据字后,就可以从CRC_DR寄存器(既下图中的兰色框)读出计算的结果。注意:虽然读写操作都是针对CRC_DR寄存器,但实际上是访问的不同物理寄存器。有几点需要说明:1)上述算法中变量CRC,在每次循环结束包含了计算的余数,它始终是向左移位(既从最低位向最高位移动),溢出的数据位被丢弃。2)输入的数据始终是以32位为单位,如果原始数据少于32位,需要在低位补0,当然也可以高位补0。3)假定输入的DWORD数组中每个分量是按小端存储。4)输入数据是按照最高位最先计算,最低位最后计算的顺序进行。例如:如果输入0x44434241,内存中按字节存放的顺序是:0x41, 0x42, 0x43, 0x44。计算的结果是:0xCF534AE1如果输入0x41424344,内存中按字节存放的顺序是:0x44, 0x43, 0x42, 0x41。计算的结果是:0xABCF9A63STM32中定时器的时钟源STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。STM32中外部中断与外部事件这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断“挂起请求寄存器”,最后经过编号4的与门输出到NVIC中断控制器;在这个通道上有4个控制选项,外部的信号首先经过边沿检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。接下来是编号3的或门,这个或门的另一个输入是“软件中断/事件寄存器”,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,既当“软件中断/事件寄存器”的对应位为“1”时,不管外部信号如何,编号3的或门都会输出有效信号。一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为“0”,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器把一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。在这张图上我们也可以知道,从外部激励信号来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向CPU产生中断请求,另一路信号会向其它功能模块发送脉冲触发信号,其它功能模块如何相应这个触发信号,则由对应的模块自己决定。在图上部的APB总线和外设模块接口,是每一个功能模块都有的部分,CPU通过这样的接口访问各个功能模块,这里就不再赘述了。STM32的USART发送数据时如何使用TXE和TC标志在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器(下图中阴影部分的TDR),另一个是程序看不到的移位寄存器(下图中阴影部分Transmit Shift Register)。对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束;对照下图,当TDR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输数据,但因为TDR已经变空,程序可以把下一个要发送的字节(操作USART_DR)写入TDR中,而不必等到移位寄存器中所有位发送结束,所有位发送结束时(送出停止位后)硬件会设置TC标志。另一方面,在刚刚初始化好USART还没有发送任何数据时,也会有TXE标志,因为这时发送数据寄存器是空的。TXEIE和TCIE的意义很简单,TXEIE允许在TXE标志为'1'时产生中断,而TCIE允许在TC标志为'1'时产生中断。至于什么时候使用哪个标志,需要根据你的需要自己决定。但我认为TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。STM32设置了很多非常有用和灵活的控制和状态位,只要你很好地掌握了它们的用法,可以让你的应用更加精确和高效。在STM32中如何配置片内外设使用的IO端口首先,一个外设经过配置输入的时钟和初始化后即被激活(开启)。如果需要使用该外设的输入输出管脚,则需要配置相应的GPIO端口;否则该外设对应的输入输出管脚可以做普通GPIO管脚使用。
2017-10-07 11:44:54

带你走进STM32的世界

STM32F10xx时钟系统框图:时钟是整个系统的脉搏下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现的安全设置。特别注意:图的右边,输出定时器时钟之前有一个乘法器,它的操作不是由程序控制的,是由硬件根据前一级的APB预分频器的输出自动选择,当APB预分频器的分频因子为1时,这个乘法器无作用;当APB预分频器的分频因子大于1时,这个乘法器做倍频操作,即将APB预分频器输出的频率乘2,这样可以保证定时器可以得到最高的72MHz时钟脉冲。STM32上很多管脚功能可以重新映射STM32上有很多I/O口,也有很多的内置外设,为了节省引出管脚,这些内置外设都是与I/O口共用引出管脚,ST称其为I/O管脚的复用功能,相信这点大家都很清楚,因为基本上所有单片机都是这么做的。但不知有多少人知道,很多复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变的。这一功能的直接好处是,PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。复用功能引出脚的重映射功能所带来的潜在好处是,在你不需要同时使用多个复用功能时,虚拟地增加复用功能的数量。例如,STM32上最多有3个USART接口,当你需要更多UART接口而又不需要同时使用它们时,可以通过这个重映射功能实现更多的UART接口。下述复用功能的引出脚具有重映射功能:- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口- CAN模块- JTAG调试接口- 大部分定时器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口详细内容请看STM32的技术参考手册。请务必记住:如果使用了任意一种重映射功能,在初始化和使用之前,一定要打开AFIO时钟。下图示出了部分复用功能引出脚的重映射结果:【演示实例】一个在EK-STM32F板子上的RTC作为calender的例子硬件连接:串口线连至板子的UART-0端口。超级终端设置为:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑这个程序时,进入时间配置。根据超级终端上的提示,一次输入年,月,日,时,分,秒(1月就输入01,10月直接输入10;同理3号就输入03)随后当前的时间就显示到了超级终端上,并且每秒刷新。没有断电的情况下再跑这个程序,由于看到bake up区域有被设置过时间的标志,不再进入时间设置阶段,而是直接到时间显示间断,在超级终端上,每秒刷新。当然如果在EK-STM32F板子上将Vbat和电池相接,具体就是:将红色的电源跳线帽中的从下往上数的第5个取下,从原来的水平放置改成竖直放置(和上面的VBAT相连)。就算断电,只要再上电,看到back up区域中的记号,一样直接进入时间显示。因为断电后,back up区域由电池供电,其中记录的记号不会由于系统掉电而消失。【演示实例】使用EK-STM32F板测量STM32的功耗这个例子演示了如何使用EK-STM32F开发评估板测量STM32F103VBT6在各种模式下的功耗。例子中演示了如何进入STM32的各种模式(RUN、SLEEP、STOP、STANDBY),使用这个例子您可以通过EK-STM32F板上的红色跳线(VDD、VREF+和VDDA)测量功耗。本实例首先通过UART与Windows的Hyperterminal通信,用户可以选择需要进入的功耗模式,然后这个例程把用户选好的配置存到后备寄存器,再次复位后STM32将进入之前选定的模式。附件包中包含了一个说明文件,详细说明了如何设置板上的跳线和操作的过程。STM32 GPIO的十大优越功能综述前几天Hotpower邀请大家讨论一下GPIO的功能、性能和优缺点(STM32的GPIO很强大~~~),等了几天没见太多人发言,但综合来看提到了3点:1)真双向IO,2)速度快,3)寄存器功能重复。关于第3点有说好,有说多余的,见仁见智。下面我就在做个抛砖引玉,根据ST手册上的内容,简单地综述一下GPIO的功能:一、共有8种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 模拟输入5. 开漏输出——(此模式可实现hotpower说的真双向IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。三、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。四、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。五、所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。六、大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD-1.3V时,可以提供或吸收20mA电流。七、具有独立的唤醒I/O口。八、很多I/O口的复用功能可以重新映射,见:你知道吗?STM32上很多管脚功能可以重新映射。九、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。十、输出模式下输入寄存器依然有效,在开漏配置模式下实现真正的双向I/O功能。STM32内置参照电压的使用每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17。根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V。这个电压基本不随外部供电电压的变化而变化。不少人把这个参照电压与ADC的参考电压混淆。ADC的参考电压都是通过Vref+提供的。100脚以上的型号,Vref+引到了片外,引脚名称为Vref+;64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。在ADC的外部参考电压波动,或因为Vref+在芯片内部与VCC相连而VCC变化的情况下,如果对于ADC测量的准确性要求不高时,可以使用这个内部参照电压得到ADC测量的电压值。具体方法是在测量某个通道的电压值之前,先读出参照电压的ADC测量数值,记为ADrefint;再读出要测量通道的ADC转换数值,记为ADchx;则要测量的电压为:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint为参照电压=1.20V。上述方法在使用内置温度传感器对因为温度变化,对系统参数进行补偿时就十分有效。STM32的ADC输入通道配置STM32中最多有3个ADC模块,每个模块对应的通道不完全重叠。下图是STM32F103CDE数据手册中的总框图的左下角,图中可以看出有8个外部ADC管脚分别接到了3个ADC模块,有8个外部ADC管脚只分别接到了2个ADC模块,还有5个外部ADC管脚只接到了ADC3模块,这样总共是21个通道。下表是这些ADC管脚与每个ADC模块的对应关系,表中可以看出ADC1还有2个内部通道,分别接到内部的温度传感器和内部的参照电压: 关于STM32 ADC速度的问题STM32F103xx系列称为增强型产品,增强型产品的最高时钟频率可以达到72MHz。增强型产品的英文名称为Performance Line。STM32F101xx系列称为基本型产品,基本型产品的最高时钟频率可以达到36MHz。基本型产品的英文名称为Access Line。根据设计,当ADC模块的频率为14MHz时,可以达到ADC的最快采样转换速度。要得到14MHz的ADC频率,就要求SYSCLK的频率是14MHz的倍数,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;对于基本型产品14MHz和28MHz处于它的最大允许频率范围内;对于增强型产品,14MHz、28MHz、42MHz、56MHz和70MHz几种频率都在它的最大允许频率范围内,但因为ADC预分频器的分频系数只有2、4、6、8这几个,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC转换速度,在增强型产品上能用的最快SYSCLK频率是56MHz。ADC的速度由2个参数决定,它是采样时间和转换时间之和: 即:TCONV = 采样时间 + 12.5个ADC时钟周期在STM32中,ADC的采样时间是由用户程序在一组预定的数值中选择,按照ADC的时钟周期计算,共有8种选择:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5个时钟周期的采样时间计算,最短的TCONV等于14个时钟周期,如果ADC的时钟频率是14MHz,则ADC的速度为每秒100万次。注意:当ADC的时钟频率超过14MHz时,ADC的精度将会显著下降。STM32内置CRC模块的使用所有的STM32芯片都内置了一个硬件的CRC计算模块,可以很方便地应用到需要进行通信的程序中,这个CRC计算模块使用常见的、在以太网中使用的计算多项式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1写成16进制就是:0x04C11DB7使用这个内置CRC模块的方法非常简单,既首先复位CRC模块(设置CRC_CR=0x01),这个操作把CRC计算的余数初始化为0xFFFFFFFF;然后把要计算的数据按每32位分割为一组数据字,并逐个地把这组数据字写入CRC_DR寄存器(既下图中的绿色框),写完所有的数据字后,就可以从CRC_DR寄存器(既下图中的兰色框)读出计算的结果。注意:虽然读写操作都是针对CRC_DR寄存器,但实际上是访问的不同物理寄存器。有几点需要说明:1)上述算法中变量CRC,在每次循环结束包含了计算的余数,它始终是向左移位(既从最低位向最高位移动),溢出的数据位被丢弃。2)输入的数据始终是以32位为单位,如果原始数据少于32位,需要在低位补0,当然也可以高位补0。3)假定输入的DWORD数组中每个分量是按小端存储。4)输入数据是按照最高位最先计算,最低位最后计算的顺序进行。例如:如果输入0x44434241,内存中按字节存放的顺序是:0x41, 0x42, 0x43, 0x44。计算的结果是:0xCF534AE1如果输入0x41424344,内存中按字节存放的顺序是:0x44, 0x43, 0x42, 0x41。计算的结果是:0xABCF9A63STM32中定时器的时钟源STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。STM32中外部中断与外部事件这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断“挂起请求寄存器”,最后经过编号4的与门输出到NVIC中断控制器;在这个通道上有4个控制选项,外部的信号首先经过边沿检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。接下来是编号3的或门,这个或门的另一个输入是“软件中断/事件寄存器”,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,既当“软件中断/事件寄存器”的对应位为“1”时,不管外部信号如何,编号3的或门都会输出有效信号。一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为“0”,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器把一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。在这张图上我们也可以知道,从外部激励信号来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向CPU产生中断请求,另一路信号会向其它功能模块发送脉冲触发信号,其它功能模块如何相应这个触发信号,则由对应的模块自己决定。在图上部的APB总线和外设模块接口,是每一个功能模块都有的部分,CPU通过这样的接口访问各个功能模块,这里就不再赘述了。STM32的USART发送数据时如何使用TXE和TC标志在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器(下图中阴影部分的TDR),另一个是程序看不到的移位寄存器(下图中阴影部分Transmit Shift Register)。对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束;对照下图,当TDR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输数据,但因为TDR已经变空,程序可以把下一个要发送的字节(操作USART_DR)写入TDR中,而不必等到移位寄存器中所有位发送结束,所有位发送结束时(送出停止位后)硬件会设置TC标志。另一方面,在刚刚初始化好USART还没有发送任何数据时,也会有TXE标志,因为这时发送数据寄存器是空的。TXEIE和TCIE的意义很简单,TXEIE允许在TXE标志为'1'时产生中断,而TCIE允许在TC标志为'1'时产生中断。至于什么时候使用哪个标志,需要根据你的需要自己决定。但我认为TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。STM32设置了很多非常有用和灵活的控制和状态位,只要你很好地掌握了它们的用法,可以让你的应用更加精确和高效。在STM32中如何配置片内外设使用的IO端口首先,一个外设经过配置输入的时钟和初始化后即被激活(开启)。如果需要使用该外设的输入输出管脚,则需要配置相应的GPIO端口;否则该外设对应的输入输出管脚可以做普通GPIO管脚使用。
2017-10-11 09:30:36

带你走进STM32的世界

STM32F10xx时钟系统框图:时钟是整个系统的脉搏下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现的安全设置。特别注意:图的右边,输出定时器时钟之前有一个乘法器,它的操作不是由程序控制的,是由硬件根据前一级的APB预分频器的输出自动选择,当APB预分频器的分频因子为1时,这个乘法器无作用;当APB预分频器的分频因子大于1时,这个乘法器做倍频操作,即将APB预分频器输出的频率乘2,这样可以保证定时器可以得到最高的72MHz时钟脉冲。STM32上很多管脚功能可以重新映射STM32上有很多I/O口,也有很多的内置外设,为了节省引出管脚,这些内置外设都是与I/O口共用引出管脚,ST称其为I/O管脚的复用功能,相信这点大家都很清楚,因为基本上所有单片机都是这么做的。但不知有多少人知道,很多复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变的。这一功能的直接好处是,PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。复用功能引出脚的重映射功能所带来的潜在好处是,在你不需要同时使用多个复用功能时,虚拟地增加复用功能的数量。例如,STM32上最多有3个USART接口,当你需要更多UART接口而又不需要同时使用它们时,可以通过这个重映射功能实现更多的UART接口。下述复用功能的引出脚具有重映射功能:- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口- CAN模块- JTAG调试接口- 大部分定时器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口详细内容请看STM32的技术参考手册。请务必记住:如果使用了任意一种重映射功能,在初始化和使用之前,一定要打开AFIO时钟。下图示出了部分复用功能引出脚的重映射结果:【演示实例】一个在EK-STM32F板子上的RTC作为calender的例子硬件连接:串口线连至板子的UART-0端口。超级终端设置为:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑这个程序时,进入时间配置。根据超级终端上的提示,一次输入年,月,日,时,分,秒(1月就输入01,10月直接输入10;同理3号就输入03)随后当前的时间就显示到了超级终端上,并且每秒刷新。没有断电的情况下再跑这个程序,由于看到bake up区域有被设置过时间的标志,不再进入时间设置阶段,而是直接到时间显示间断,在超级终端上,每秒刷新。当然如果在EK-STM32F板子上将Vbat和电池相接,具体就是:将红色的电源跳线帽中的从下往上数的第5个取下,从原来的水平放置改成竖直放置(和上面的VBAT相连)。就算断电,只要再上电,看到back up区域中的记号,一样直接进入时间显示。因为断电后,back up区域由电池供电,其中记录的记号不会由于系统掉电而消失。【演示实例】使用EK-STM32F板测量STM32的功耗这个例子演示了如何使用EK-STM32F开发评估板测量STM32F103VBT6在各种模式下的功耗。例子中演示了如何进入STM32的各种模式(RUN、SLEEP、STOP、STANDBY),使用这个例子您可以通过EK-STM32F板上的红色跳线(VDD、VREF+和VDDA)测量功耗。本实例首先通过UART与Windows的Hyperterminal通信,用户可以选择需要进入的功耗模式,然后这个例程把用户选好的配置存到后备寄存器,再次复位后STM32将进入之前选定的模式。附件包中包含了一个说明文件,详细说明了如何设置板上的跳线和操作的过程。STM32 GPIO的十大优越功能综述前几天Hotpower邀请大家讨论一下GPIO的功能、性能和优缺点(STM32的GPIO很强大~~~),等了几天没见太多人发言,但综合来看提到了3点:1)真双向IO,2)速度快,3)寄存器功能重复。关于第3点有说好,有说多余的,见仁见智。下面我就在做个抛砖引玉,根据ST手册上的内容,简单地综述一下GPIO的功能:一、共有8种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 模拟输入5. 开漏输出——(此模式可实现hotpower说的真双向IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。三、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。四、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。五、所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。六、大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD-1.3V时,可以提供或吸收20mA电流。七、具有独立的唤醒I/O口。八、很多I/O口的复用功能可以重新映射,见:你知道吗?STM32上很多管脚功能可以重新映射。九、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。十、输出模式下输入寄存器依然有效,在开漏配置模式下实现真正的双向I/O功能。STM32内置参照电压的使用每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17。根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V。这个电压基本不随外部供电电压的变化而变化。不少人把这个参照电压与ADC的参考电压混淆。ADC的参考电压都是通过Vref+提供的。100脚以上的型号,Vref+引到了片外,引脚名称为Vref+;64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。在ADC的外部参考电压波动,或因为Vref+在芯片内部与VCC相连而VCC变化的情况下,如果对于ADC测量的准确性要求不高时,可以使用这个内部参照电压得到ADC测量的电压值。具体方法是在测量某个通道的电压值之前,先读出参照电压的ADC测量数值,记为ADrefint;再读出要测量通道的ADC转换数值,记为ADchx;则要测量的电压为:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint为参照电压=1.20V。上述方法在使用内置温度传感器对因为温度变化,对系统参数进行补偿时就十分有效。STM32的ADC输入通道配置STM32中最多有3个ADC模块,每个模块对应的通道不完全重叠。下图是STM32F103CDE数据手册中的总框图的左下角,图中可以看出有8个外部ADC管脚分别接到了3个ADC模块,有8个外部ADC管脚只分别接到了2个ADC模块,还有5个外部ADC管脚只接到了ADC3模块,这样总共是21个通道。下表是这些ADC管脚与每个ADC模块的对应关系,表中可以看出ADC1还有2个内部通道,分别接到内部的温度传感器和内部的参照电压: 关于STM32 ADC速度的问题STM32F103xx系列称为增强型产品,增强型产品的最高时钟频率可以达到72MHz。增强型产品的英文名称为Performance Line。STM32F101xx系列称为基本型产品,基本型产品的最高时钟频率可以达到36MHz。基本型产品的英文名称为Access Line。根据设计,当ADC模块的频率为14MHz时,可以达到ADC的最快采样转换速度。要得到14MHz的ADC频率,就要求SYSCLK的频率是14MHz的倍数,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;对于基本型产品14MHz和28MHz处于它的最大允许频率范围内;对于增强型产品,14MHz、28MHz、42MHz、56MHz和70MHz几种频率都在它的最大允许频率范围内,但因为ADC预分频器的分频系数只有2、4、6、8这几个,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC转换速度,在增强型产品上能用的最快SYSCLK频率是56MHz。ADC的速度由2个参数决定,它是采样时间和转换时间之和: 即:TCONV = 采样时间 + 12.5个ADC时钟周期在STM32中,ADC的采样时间是由用户程序在一组预定的数值中选择,按照ADC的时钟周期计算,共有8种选择:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5个时钟周期的采样时间计算,最短的TCONV等于14个时钟周期,如果ADC的时钟频率是14MHz,则ADC的速度为每秒100万次。注意:当ADC的时钟频率超过14MHz时,ADC的精度将会显著下降。STM32内置CRC模块的使用所有的STM32芯片都内置了一个硬件的CRC计算模块,可以很方便地应用到需要进行通信的程序中,这个CRC计算模块使用常见的、在以太网中使用的计算多项式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1写成16进制就是:0x04C11DB7使用这个内置CRC模块的方法非常简单,既首先复位CRC模块(设置CRC_CR=0x01),这个操作把CRC计算的余数初始化为0xFFFFFFFF;然后把要计算的数据按每32位分割为一组数据字,并逐个地把这组数据字写入CRC_DR寄存器(既下图中的绿色框),写完所有的数据字后,就可以从CRC_DR寄存器(既下图中的兰色框)读出计算的结果。注意:虽然读写操作都是针对CRC_DR寄存器,但实际上是访问的不同物理寄存器。有几点需要说明:1)上述算法中变量CRC,在每次循环结束包含了计算的余数,它始终是向左移位(既从最低位向最高位移动),溢出的数据位被丢弃。2)输入的数据始终是以32位为单位,如果原始数据少于32位,需要在低位补0,当然也可以高位补0。3)假定输入的DWORD数组中每个分量是按小端存储。4)输入数据是按照最高位最先计算,最低位最后计算的顺序进行。例如:如果输入0x44434241,内存中按字节存放的顺序是:0x41, 0x42, 0x43, 0x44。计算的结果是:0xCF534AE1如果输入0x41424344,内存中按字节存放的顺序是:0x44, 0x43, 0x42, 0x41。计算的结果是:0xABCF9A63STM32中定时器的时钟源STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。STM32中外部中断与外部事件这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断“挂起请求寄存器”,最后经过编号4的与门输出到NVIC中断控制器;在这个通道上有4个控制选项,外部的信号首先经过边沿检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。接下来是编号3的或门,这个或门的另一个输入是“软件中断/事件寄存器”,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,既当“软件中断/事件寄存器”的对应位为“1”时,不管外部信号如何,编号3的或门都会输出有效信号。一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为“0”,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器把一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。在这张图上我们也可以知道,从外部激励信号来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向CPU产生中断请求,另一路信号会向其它功能模块发送脉冲触发信号,其它功能模块如何相应这个触发信号,则由对应的模块自己决定。在图上部的APB总线和外设模块接口,是每一个功能模块都有的部分,CPU通过这样的接口访问各个功能模块,这里就不再赘述了。STM32的USART发送数据时如何使用TXE和TC标志在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器(下图中阴影部分的TDR),另一个是程序看不到的移位寄存器(下图中阴影部分Transmit Shift Register)。对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束;对照下图,当TDR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输数据,但因为TDR已经变空,程序可以把下一个要发送的字节(操作USART_DR)写入TDR中,而不必等到移位寄存器中所有位发送结束,所有位发送结束时(送出停止位后)硬件会设置TC标志。另一方面,在刚刚初始化好USART还没有发送任何数据时,也会有TXE标志,因为这时发送数据寄存器是空的。TXEIE和TCIE的意义很简单,TXEIE允许在TXE标志为'1'时产生中断,而TCIE允许在TC标志为'1'时产生中断。至于什么时候使用哪个标志,需要根据你的需要自己决定。但我认为TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。STM32设置了很多非常有用和灵活的控制和状态位,只要你很好地掌握了它们的用法,可以让你的应用更加精确和高效。在STM32中如何配置片内外设使用的IO端口首先,一个外设经过配置输入的时钟和初始化后即被激活(开启)。如果需要使用该外设的输入输出管脚,则需要配置相应的GPIO端口;否则该外设对应的输入输出管脚可以做普通GPIO管脚使用。
2016-09-21 09:43:16

带你走进STM32的世界

STM32F10xx时钟系统框图:时钟是整个系统的脉搏下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分的时钟频率。STM32的四个时钟源(HSI、HSE、LSI和LSE)也在图中标出;图中间的时钟监视系统(CSS)是在很多ST7的单片机中就出现的安全设置。特别注意:图的右边,输出定时器时钟之前有一个乘法器,它的操作不是由程序控制的,是由硬件根据前一级的APB预分频器的输出自动选择,当APB预分频器的分频因子为1时,这个乘法器无作用;当APB预分频器的分频因子大于1时,这个乘法器做倍频操作,即将APB预分频器输出的频率乘2,这样可以保证定时器可以得到最高的72MHz时钟脉冲。STM32上很多管脚功能可以重新映射STM32上有很多I/O口,也有很多的内置外设,为了节省引出管脚,这些内置外设都是与I/O口共用引出管脚,ST称其为I/O管脚的复用功能,相信这点大家都很清楚,因为基本上所有单片机都是这么做的。但不知有多少人知道,很多复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变的。这一功能的直接好处是,PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。复用功能引出脚的重映射功能所带来的潜在好处是,在你不需要同时使用多个复用功能时,虚拟地增加复用功能的数量。例如,STM32上最多有3个USART接口,当你需要更多UART接口而又不需要同时使用它们时,可以通过这个重映射功能实现更多的UART接口。下述复用功能的引出脚具有重映射功能:- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口- CAN模块- JTAG调试接口- 大部分定时器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口详细内容请看STM32的技术参考手册。请务必记住:如果使用了任意一种重映射功能,在初始化和使用之前,一定要打开AFIO时钟。下图示出了部分复用功能引出脚的重映射结果:【演示实例】一个在EK-STM32F板子上的RTC作为calender的例子硬件连接:串口线连至板子的UART-0端口。超级终端设置为:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑这个程序时,进入时间配置。根据超级终端上的提示,一次输入年,月,日,时,分,秒(1月就输入01,10月直接输入10;同理3号就输入03)随后当前的时间就显示到了超级终端上,并且每秒刷新。没有断电的情况下再跑这个程序,由于看到bake up区域有被设置过时间的标志,不再进入时间设置阶段,而是直接到时间显示间断,在超级终端上,每秒刷新。当然如果在EK-STM32F板子上将Vbat和电池相接,具体就是:将红色的电源跳线帽中的从下往上数的第5个取下,从原来的水平放置改成竖直放置(和上面的VBAT相连)。就算断电,只要再上电,看到back up区域中的记号,一样直接进入时间显示。因为断电后,back up区域由电池供电,其中记录的记号不会由于系统掉电而消失。【演示实例】使用EK-STM32F板测量STM32的功耗这个例子演示了如何使用EK-STM32F开发评估板测量STM32F103VBT6在各种模式下的功耗。例子中演示了如何进入STM32的各种模式(RUN、SLEEP、STOP、STANDBY),使用这个例子您可以通过EK-STM32F板上的红色跳线(VDD、VREF+和VDDA)测量功耗。本实例首先通过UART与Windows的Hyperterminal通信,用户可以选择需要进入的功耗模式,然后这个例程把用户选好的配置存到后备寄存器,再次复位后STM32将进入之前选定的模式。附件包中包含了一个说明文件,详细说明了如何设置板上的跳线和操作的过程。STM32 GPIO的十大优越功能综述前几天Hotpower邀请大家讨论一下GPIO的功能、性能和优缺点(STM32的GPIO很强大~~~),等了几天没见太多人发言,但综合来看提到了3点:1)真双向IO,2)速度快,3)寄存器功能重复。关于第3点有说好,有说多余的,见仁见智。下面我就在做个抛砖引玉,根据ST手册上的内容,简单地综述一下GPIO的功能:一、共有8种模式,可以通过编程选择:1. 浮空输入2. 带上拉输入3. 带下拉输入4. 模拟输入5. 开漏输出——(此模式可实现hotpower说的真双向IO)6. 推挽输出7. 复用功能的推挽输出8. 复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)实现对GPIO口的原子操作,即回避了设置或清除I/O端口时的“读-修改-写”操作,使得设置或清除I/O端口的操作不会被中断处理打断而造成误动作。三、每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。四、I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。五、所有I/O口兼容CMOS和TTL,多数I/O口兼容5V电平。六、大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以提供或吸收8mA电流;如果把输入输出电平分别放宽到1.3V和VDD-1.3V时,可以提供或吸收20mA电流。七、具有独立的唤醒I/O口。八、很多I/O口的复用功能可以重新映射,见:你知道吗?STM32上很多管脚功能可以重新映射。九、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下保护系统中其他的设备,不会因为某些I/O口的配置被改变而损坏——如一个输入口变成输出口并输出电流。十、输出模式下输入寄存器依然有效,在开漏配置模式下实现真正的双向I/O功能。STM32内置参照电压的使用每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17。根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V。这个电压基本不随外部供电电压的变化而变化。不少人把这个参照电压与ADC的参考电压混淆。ADC的参考电压都是通过Vref+提供的。100脚以上的型号,Vref+引到了片外,引脚名称为Vref+;64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。在ADC的外部参考电压波动,或因为Vref+在芯片内部与VCC相连而VCC变化的情况下,如果对于ADC测量的准确性要求不高时,可以使用这个内部参照电压得到ADC测量的电压值。具体方法是在测量某个通道的电压值之前,先读出参照电压的ADC测量数值,记为ADrefint;再读出要测量通道的ADC转换数值,记为ADchx;则要测量的电压为:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint为参照电压=1.20V。上述方法在使用内置温度传感器对因为温度变化,对系统参数进行补偿时就十分有效。STM32的ADC输入通道配置STM32中最多有3个ADC模块,每个模块对应的通道不完全重叠。下图是STM32F103CDE数据手册中的总框图的左下角,图中可以看出有8个外部ADC管脚分别接到了3个ADC模块,有8个外部ADC管脚只分别接到了2个ADC模块,还有5个外部ADC管脚只接到了ADC3模块,这样总共是21个通道。下表是这些ADC管脚与每个ADC模块的对应关系,表中可以看出ADC1还有2个内部通道,分别接到内部的温度传感器和内部的参照电压: 关于STM32 ADC速度的问题STM32F103xx系列称为增强型产品,增强型产品的最高时钟频率可以达到72MHz。增强型产品的英文名称为Performance Line。STM32F101xx系列称为基本型产品,基本型产品的最高时钟频率可以达到36MHz。基本型产品的英文名称为Access Line。根据设计,当ADC模块的频率为14MHz时,可以达到ADC的最快采样转换速度。要得到14MHz的ADC频率,就要求SYSCLK的频率是14MHz的倍数,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;对于基本型产品14MHz和28MHz处于它的最大允许频率范围内;对于增强型产品,14MHz、28MHz、42MHz、56MHz和70MHz几种频率都在它的最大允许频率范围内,但因为ADC预分频器的分频系数只有2、4、6、8这几个,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC转换速度,在增强型产品上能用的最快SYSCLK频率是56MHz。ADC的速度由2个参数决定,它是采样时间和转换时间之和: 即:TCONV = 采样时间 + 12.5个ADC时钟周期在STM32中,ADC的采样时间是由用户程序在一组预定的数值中选择,按照ADC的时钟周期计算,共有8种选择:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5个时钟周期的采样时间计算,最短的TCONV等于14个时钟周期,如果ADC的时钟频率是14MHz,则ADC的速度为每秒100万次。注意:当ADC的时钟频率超过14MHz时,ADC的精度将会显著下降。STM32内置CRC模块的使用所有的STM32芯片都内置了一个硬件的CRC计算模块,可以很方便地应用到需要进行通信的程序中,这个CRC计算模块使用常见的、在以太网中使用的计算多项式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1写成16进制就是:0x04C11DB7使用这个内置CRC模块的方法非常简单,既首先复位CRC模块(设置CRC_CR=0x01),这个操作把CRC计算的余数初始化为0xFFFFFFFF;然后把要计算的数据按每32位分割为一组数据字,并逐个地把这组数据字写入CRC_DR寄存器(既下图中的绿色框),写完所有的数据字后,就可以从CRC_DR寄存器(既下图中的兰色框)读出计算的结果。注意:虽然读写操作都是针对CRC_DR寄存器,但实际上是访问的不同物理寄存器。有几点需要说明:1)上述算法中变量CRC,在每次循环结束包含了计算的余数,它始终是向左移位(既从最低位向最高位移动),溢出的数据位被丢弃。2)输入的数据始终是以32位为单位,如果原始数据少于32位,需要在低位补0,当然也可以高位补0。3)假定输入的DWORD数组中每个分量是按小端存储。4)输入数据是按照最高位最先计算,最低位最后计算的顺序进行。例如:如果输入0x44434241,内存中按字节存放的顺序是:0x41, 0x42, 0x43, 0x44。计算的结果是:0xCF534AE1如果输入0x41424344,内存中按字节存放的顺序是:0x44, 0x43, 0x42, 0x41。计算的结果是:0xABCF9A63STM32中定时器的时钟源STM32中有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图:从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。下面以定时器2~7的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。再举个例子:当AHB=72MHz时,APB1的预分频系数必须大于2,因为APB1的最大频率只能为36MHz。如果APB1的预分频系数=2,则因为这个倍频器,TIM2~7仍然能够得到72MHz的时钟频率。能够使用更高的时钟频率,无疑提高了定时器的分辨率,这也正是设计这个倍频器的初衷。STM32中外部中断与外部事件这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断“挂起请求寄存器”,最后经过编号4的与门输出到NVIC中断控制器;在这个通道上有4个控制选项,外部的信号首先经过边沿检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。接下来是编号3的或门,这个或门的另一个输入是“软件中断/事件寄存器”,从这里可以看出,软件可以优先于外部信号请求一个中断或事件,既当“软件中断/事件寄存器”的对应位为“1”时,不管外部信号如何,编号3的或门都会输出有效信号。一个中断或事件请求信号经过编号3的或门后,进入挂起请求寄存器,到此之前,中断和事件的信号传输通路都是一致的,也就是说,挂起请求寄存器中记录了外部信号的电平变化。外部请求信号最后经过编号4的与门,向NVIC中断控制器发出一个中断请求,如果中断屏蔽寄存器的对应位为“0”,则该请求信号不能传输到与门的另一端,实现了中断的屏蔽。明白了外部中断的请求机制,就很容易理解事件的请求机制了。图中红色虚线箭头,标出了外部事件信号的传输路径,外部请求信号经过编号3的或门后,进入编号5的与门,这个与门的作用与编号4的与门类似,用于引入事件屏蔽寄存器的控制;最后脉冲发生器把一个跳变的信号转变为一个单脉冲,输出到芯片中的其它功能模块。在这张图上我们也可以知道,从外部激励信号来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向CPU产生中断请求,另一路信号会向其它功能模块发送脉冲触发信号,其它功能模块如何相应这个触发信号,则由对应的模块自己决定。在图上部的APB总线和外设模块接口,是每一个功能模块都有的部分,CPU通过这样的接口访问各个功能模块,这里就不再赘述了。STM32的USART发送数据时如何使用TXE和TC标志在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器(下图中阴影部分的TDR),另一个是程序看不到的移位寄存器(下图中阴影部分Transmit Shift Register)。对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束;对照下图,当TDR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输数据,但因为TDR已经变空,程序可以把下一个要发送的字节(操作USART_DR)写入TDR中,而不必等到移位寄存器中所有位发送结束,所有位发送结束时(送出停止位后)硬件会设置TC标志。另一方面,在刚刚初始化好USART还没有发送任何数据时,也会有TXE标志,因为这时发送数据寄存器是空的。TXEIE和TCIE的意义很简单,TXEIE允许在TXE标志为'1'时产生中断,而TCIE允许在TC标志为'1'时产生中断。至于什么时候使用哪个标志,需要根据你的需要自己决定。但我认为TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。STM32设置了很多非常有用和灵活的控制和状态位,只要你很好地掌握了它们的用法,可以让你的应用更加精确和高效。在STM32中如何配置片内外设使用的IO端口首先,一个外设经过配置输入的时钟和初始化后即被激活(开启)。如果需要使用该外设的输入输出管脚,则需要配置相应的GPIO端口;否则该外设对应的输入输出管脚可以做普通GPIO管脚使用。
2017-10-25 10:04:38

带你走进STM32的世界

带你走进STM32的世界STM32F10xx时钟系统框图:时钟是整个系统的脉搏下图是STM32F10xx时钟系统的框图,通过这个图可以一目了然地看到各个部件时钟产生的路径,还可以很方便地计算出各部分
2017-11-05 11:29:45

带你走进单片机程序设计大门

带你走进单片机程序设计大门。
2012-08-04 11:34:54

带大家走进嵌入式Linux-arm驱动开发

一、本文将会以最简单的LED驱动程序带大家走进嵌入式Linux-arm驱动开发,首先,来了解一下最简单的驱动框架。1.首先struct file_operations led_fops()函数,它是
2021-12-15 07:59:57

怎么才能防止系统受干扰而使程序丢失,或者走进死循还而使系统死机?

AT89C52的主要性能参数有哪些怎么才能防止系统受干扰而使程序丢失,或者走进死循还而使系统死机?
2021-04-14 07:03:12

数字世界里的模拟技术看完你就懂了

数字世界里的模拟技术看完你就懂了
2021-04-22 06:10:03

新手教程书籍《从零开始走进FPGA世界

;三、高速的图像和视频处理,因为FPGA内部嵌入了大量的乘法器或者DSPBlock,所以在这些领域应用颇广,此外各大FPGA公司也提供了相应的参考设计;四、大型LED面板驱动和高分辨率LCD驱动;四、协
2018-12-14 17:47:38

无线多彩LED照明控制方案

智能照明时代降临 无线多彩LED照明控制方案横空出世:本方案是大联大集团在LED智能家居照明领域的研发成果之一。通过该方案,您的LED产品就可以告别开关、遥控器的桎梏,迈入智能照明的产品的行列。详细方案及技术参数请到大联大云端wpgcloud了解>>>
2013-11-01 10:09:28

智能家居控制系统如何走进生活?

  智能家居控制系统如何走进生活?对于未来的住宅,你有怎样的期待?随着科技的发展,智能家居离我们越来越近。想象一下,在未来的住宅中,轻轻一点,家里的环境模式就能随意切换。如晨起、离家、就餐、会客
2018-05-02 11:47:38

智能照明光照你我他,关爱每一个家

在都市里 ,到处炫耀着五颜的智能灯光照明系统色彩,这是一个五彩斑斓的世界,下面小编就带你走进智能家居系统中的姹紫嫣红在室内,智能灯光照明系统慢慢已经走进人们的生活,让室内变得五彩斑斓,暖意浓浓。在
2016-05-16 16:31:37

未来世界如何供电

未来世界如何供电:无线传输或成主流
2021-01-07 06:56:18

格林代尔多彩竹木纤维多姿色彩

格林代尔多彩竹木纤维异型产品畅销全国,格林代尔集成墙饰,格林代尔集成墙,主萧亚轩与男友调情用于作为室内装饰,是建筑装潢首要选择产品,格林代尔集成墙饰,以全国为主章子怡集齐12个影后服务地区,客户
2016-03-28 16:35:48

求大牛DIY一个世界地图形状LED点阵(4米宽,2000点)

`有个展厅项目需要做一个世界地图形状的展品,整体形状是由2000根亚克力管构成的一幅4米宽世界地图,每根亚克力管的截面构成地图的一个像素点,亚克力管顶部封装不同的种子,底部安装LED灯珠以照亮顶部
2018-01-18 17:09:09

电子单片机教案 循环渐进走进电子世界

电子单片机教案 循环渐进走进电子世界
2013-07-28 12:41:24

要过年啦,小编这里给大家拜个早年!

` 小编这里给位英雄“猴”杰,绿林“猴”士,“猴”门贵胄拜年啦,在这空前绝猴”的 花“猴”月圆之夜,小编有很多的”猴”情壮志 ,“猴”言壮语溢于言表,2015年大家在论坛的猴”谋善断,让论坛增添多彩
2016-01-29 10:12:53

迷失的arm世界。。

接触电子的东西已经快一年了,但是就是感觉很无助,单片机会点51,自学了些模电数电,其他什么的也了解了一点,现在我想自学arm,但是又不知道现在够格学了没,so,真心希望你能给小弟指点一下怎样走进arm。。
2013-06-11 16:48:05

多彩305摄像头驱动下载

多彩305摄像头驱动下载
2008-01-11 22:55:595

LED显示精彩世界

LED显示精彩世界,LED显示屏在各大人流场所随处可见.为人们的眼界开拓了新的空间.
2021-11-22 09:26:58

启动数码能量,丰富多彩生活

             启动数码能量,丰富多彩生活
2009-01-15 12:39:13358

走进比亚迪

走进比亚迪  比亚迪股份有限公司始建于1995年,由 20 多人的规模起步,短短十年时间内迅速成长为 IT 及电子零部件的世界
2009-10-27 11:43:01429

走进双鹿电池

走进双鹿电池 中银(宁波)电池有限
2009-10-28 14:56:591121

多彩节能的夏日平板挑选法则

多彩节能的夏日平板挑选法则 前言: 09平板市场三军鼎立,以三星、索尼为代表的合资品牌从背光源着力,主推LED电视;而部分国
2010-02-11 11:56:20356

目前世界上最大的led显示屏在哪里

目前世界上最大的led显示屏在哪里
2010-03-10 10:56:565686

我国LED专利仅占世界的十分之一

我国LED专利仅占世界的十分之一   如今,中国已经成为世界上重要的中低端LED封装生产基地,预计2010年中国LED产业将达到1000亿元
2010-03-23 09:02:59568

车用LED头灯组研发介绍

随着半导体材料的突破与白光发光二极体的问世,被誉为照亮未来技术的LED(发光二极体)渐渐走进了我们的日常生活当中,并带领我们迎向固态照明世界。因此白光LED是固态照明中一
2011-04-14 15:06:1036

LED驱动——点亮世界

一直以来驱动电路是LED应用产品的重要组成部分,如何设计一个优秀的LED驱动电路也是困扰着工程师的难题之一。本专题从LED原理出发,分析LED驱动设计所要注意的问题。LED驱动解决方案难点在于:电流
2012-03-14 16:30:38

世界主要LED生产厂家介绍

世界主要LED生产厂家介绍:日亚化工是GaN系的开拓者,在LED和激光领域居世界首位。丰田合成提出了车体和轮胎的概念。
2012-03-29 10:05:567289

LED的应用设计

随着LED技术的不断成熟,LED的成本和价格降了下来,加之政府对新能源的大力支持,使得LED在各个行业的使用越来越广泛,LED开始走进我们的日常生活!本专题主要从LED应用介绍、LED照明应用、LED驱动设计应用、LED应用电路图和LED显示设计应用五个方面来介绍LED的应用设计!
2012-08-01 15:21:37

图说LED基础小常识(一)

今天,LED已经走进千家万户,成为我们生活中常见的一项技术。在可见光LED问世50周年之际,让我们一起回顾LED的发展,认识LED的类型,以及你将可以怎样利用LED技术。
2012-11-13 17:17:368343

LED照明应对世界末日

日前关于世界末日的传闻常见报端,人们对谣言的辨别能力真是令人揪心,本文从科学角度分析即使连黑三天,有了LED照明又有何惧,LED灯应用于各个领域,给人带来光明。
2012-12-07 09:50:28839

Kick:可由WiFi控制的多彩LED

今天推荐个更给力的Kick——能够用智能手机通过WiFi进行控制的可调色LED灯。通过iPhone上的应用程序,用户就能够远程调节任何想要的彩虹色。
2013-05-31 11:25:032832

[1.1.1]--走进世界

电子技术电工技术
jf_75936199发布于 2023-03-11 01:40:28

走进2016“多彩”的LED世界:百家争鸣,精彩纷呈

过去一年,我们曾经为LED照明需求不断攀升而雀跃,为LED产品单价大幅下滑而讶异,为硅衬底技术自主化而欢呼……这些复杂表情背后,实际上反映的是LED产业大幅发展过程中所遭遇的不确定性,这种不确定性也是勃勃生机的表现。
2016-02-16 11:15:481080

Delphi教程_多彩的数据报表

Delphi教程多彩的数据报表,很好的Delphi的学习资料。
2016-03-16 14:55:524

吹逼技术只服华为,华为P10真机图曝光,死磕三星S8!配隐藏式指纹+多彩金属机身!

华为P10在颜值方面主打多彩配色,会有淡绿,骚紫,海蓝等颜色,满足年轻人的不同需求,而凑巧的是,三星S8也会主打多彩机身,显示出科技和时尚活力相结合。
2017-02-17 09:28:21473

还记得那些年的华硕笔记本电脑吗?让我们一起走进华硕笔记本世界吧!

在过去的华硕笔记本电脑世界你对这些又有哪些了解呢?和小编一起走进华硕笔记版电脑世界去了解它吸引人的一面吧!
2017-03-24 09:40:031943

索尼4K液晶电视X9300E 带你走进炫彩世界

大千世界风光无限好,当你没有时间去旅游,没有时间去欣赏外界美丽风景的时候,那就让索尼4K液晶电视带你去游览世界,带你走进大千世界,带你享受生活的乐趣。
2017-07-07 10:00:031122

LED屏显世界专访】封装小尺寸化是趋势,但更应关注可靠性(一)

LED显屏世界专题报道
2017-08-30 11:22:081331

英特尔将继续致力于自动驾驶领域的技术创新,推动自动驾驶走进真实世界

不论是和华纳兄弟的合作,还是对Mobileye的收购,都体现了英特尔在自动驾驶行业的野心和坚定。未来,英特尔将继续致力于自动驾驶领域的技术创新,推动自动驾驶走进真实世界
2018-01-03 17:27:462946

飞利浦幻彩LED冰酒灯 给你最浪漫的氛围

浪漫的饮酒环境需要多彩的氛围,飞利浦幻彩 LED 冰酒灯就用多彩LED 芯片为用户打造舒适的环境。这款冰酒灯的外观设计简约时尚,透明的主体搭配银色边框简约时尚,内置的多光色 LED 芯片可以为用户打造时尚温馨的饮酒环境,无线充电方式也可以带来时尚的使用体验。
2018-04-27 04:30:004699

巨头力推LED大屏,LED屏幕是否能走进影院?

看大片无放映机?在三星、索尼都在力推LED大屏,尤其是三星已在上海建立LED屏幕影院后,业界开始对LED屏进入电影院市场有所遐想和期待,未来LED屏幕是否会成为电影屏幕的新标准?
2018-09-13 15:06:039370

羽博猴年限量版移动电源评测 可以说是羽博移动产品的一项代表作

此时移动电源发挥最大作用的时刻到了,一路上的充电需求,全由它来保证。SO,今天,评测室为大家带来了一款“限量版”移动电源——羽博P10000猴年日历粉色版。
2018-10-23 10:03:421605

LED多彩灯旋转灯的程序和原理图资料免费下载

多彩灯旋转灯,此灯由多块副板组成旋转,可产生旋转,流水,渐变色,混色,交叉旋转异色,双灯同亮不同速旋转,声控,无声自变色,无声灭灯,有声换色,有声旋转色换色。
2018-10-29 08:00:0033

LED多彩声控旋转灯的详细资料合集免费下载

本文档的主要内容详细介绍的是LED多彩声控旋转灯的详细资料合集免费下载主要内容包括了:电路原理图,三维组装PCB,三维组装图片,视频效果
2018-10-30 08:00:0031

带你走进手机的集成电路世界

住在海底世界中心的是CPU家族,他们是整个动物世界的最强大脑。起初CPU家族只有1个兄弟,但随着功能需求越来越多,发展到现在有的CPU家族已经有8个兄弟啦!
2018-12-07 16:14:487649

嵌入式ARM与MMU神秘的内部世界!一目了然

带你走进嵌入式ARM与MMU神秘的内部世界
2019-03-01 15:02:328942

神奇的微纳米机器人走进人体

机器人界的老顽童福田敏男教授多次出席中国机器人峰会,在去年的峰会上,他带来了更新颖更具创新的研究报告,带领我们走进了一个神奇的微型生物细胞机器人世界
2019-03-20 15:38:087891

科大讯飞用AI为世界留下多彩乡音

在刚刚更新的第二集《我用AI修文物 人工智能复活千年历史》中,令人震惊的是联合国教科文组织发布:在世界范围内,每两周就有一种语言从地球上消失。
2019-10-08 11:14:532560

多彩贵州航空正式引进了一架A320neo飞机

多彩贵州航空公司引进的第一架A320neo飞机是空中客车公司最新一代的A320飞机,装有CFM公司生产的最新Leap-1A发动机,比老一代A320飞机燃油效率提高15%以上,是当前世界最高效环保的单通道飞机。
2019-10-25 11:25:382036

华为8款机型明年将更新多彩AOD灭屏显示功能

所谓“多彩AOD”就是EMUI10的新功能之一,即多彩AOD灭屏显示,不仅可以让用户随时看到时间、信息、电量等手机基本信息,还能根据时间的变化而改变字体的颜色。
2019-12-09 14:46:363772

如何测试LED显示屏是否存在故障问题

随着LED电子显示屏以及LED全彩屏的普及应用,LED显示屏已经成为了当今信息社会的一到美丽的风景线,特别是在夜幕来临时,LED显示屏绽放出璀璨的画面令人们能够感觉世界的缤纷多彩
2019-12-31 16:40:471516

vr技术如何带你走进动物的世界

VR技术的出现让我们对世界有了更加广阔的认识,让我们有机会领略到不一样的风采,VR技术也让我们重新认识大自然。
2020-03-16 15:38:191796

人工智能走进现实世界的切入点是

人工智能(AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。而人工智能走进现实世界的切入点是什么? 想要知道人工智能走进现实世界的切入点是什么这个
2021-06-04 14:39:442007

人工智能走进现实世界的切入点 用户体验是关键

人工智能AI从理论走进现实,真正走进大家的生活。
2021-06-05 12:20:091841

苹果助力Mini LED技术再次走进产业链视野

在苹果的“助攻”下,Mini LED技术再次走进产业链视野。近日,苹果在2021年第2场秋季新品发布会上带来3款新品,其中包括被称为“Mac笔记本电脑中历代之最”的新款Macbook Pro,搭载
2021-10-27 09:26:393959

洲明LED焕新一座城惊艳全世界

绚烂的光影、丰富多彩的活动、沉浸式的游玩体验,这里一直都是光影的世界、欢乐的海洋。 以裸眼3D等原创内容为牵引,以LED显示屏为交互窗口,将整个城市打造成耀眼的多媒体艺术装置,这样的大手笔,正是出自洲明。 项目所使用的全部
2021-11-06 11:01:421605

洲明LED光显方案成功走进世博会

在众多展馆中,美国、梵蒂冈、以色列等国家馆,及迪拜环球港务集团、阿联酋国家石油公司等合作伙伴展馆,共计近3000㎡LED大屏均由中国的洲明科技提供。
2021-12-13 09:50:314797

HT66FB574/572多彩流光USB鼠标应用范例

电玩产业对鼠标需求越来越高,在鼠标上增加大量 RGB LED,并且可产生不同颜色与明亮 变化多种炫酷灯光效果,使游戏鼠标更加多彩多姿,其中多颗 RGB LED 在鼠标外围围绕, 并可产生如流水效果颜色变化的鼠标,称为多彩流光鼠标。
2022-06-26 09:43:412

HT66FB576多彩独立光USB键盘应用范例

HOLTEK 针对多颗多彩灯效产品领域,开发提供应用于多颗 RGB LED 的产品,HT66FB576 最多可应用在 128 颗 RGB LED 的产品,本身又具 USB 接口,用于多彩独立光键盘相当合 适,本文将介绍使用 HT66FB576 开发多彩独立光键盘方案。
2022-06-26 09:42:122

用蜂鸣器制作多彩LED

电子发烧友网站提供《用蜂鸣器制作多彩LED流.zip》资料免费下载
2022-11-10 14:43:180

世界上最薄的NeoPixel LED矩阵

电子发烧友网站提供《世界上最薄的NeoPixel LED矩阵.zip》资料免费下载
2022-11-21 10:55:410

多彩世界地图上的物联网圣诞老人追踪器

电子发烧友网站提供《多彩世界地图上的物联网圣诞老人追踪器.zip》资料免费下载
2022-12-09 16:14:590

走进LED显示屏的异形世界

异形LED显示屏以绚丽多彩的显示效果,灵活多变的画面表现力,细腻清晰的视觉效果,使精彩的画面效果得到了淋漓尽致的显现。为人们在紧张的工作之余带来轻松愉快的气氛,享受音乐、美酒以及无拘无束的人际交流所带来了无穷的乐趣。
2023-04-06 16:46:47502

MP3320A | 这颗芯,律动多彩呼吸节奏

点击标题下「MPS芯源系统」可快速关注 WLED(白光LED)为我们带来了白色光芒,但生活也应该充满绚丽多彩的景象,RGB(红绿蓝)LED 就是色彩的使者, RGB+W 驱动精灵 MP3320A
2023-07-20 12:10:02441

LED球型屏惊艳世界的背后,洲明的厚积与薄发

LED行业的发展史上,LED显示与LED照明曾因主要功能不同而被划分为两个行业阵营,前者注重展示信息,后者注重照亮和装饰。
2023-07-27 14:09:23648

已全部加载完成