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

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

3天内不再提示

STM32入门编程总结(时钟+GPIO)

piaofengzai 来源:piaofengzai 作者:piaofengzai 2022-02-19 16:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

STM32入门编程总结3 (时钟+GPIO)

时钟,单片机的时钟好比人的心脏,时钟歇了,单片机也就停止工作了,51单片机就一个时钟,12M、11.0592M居多,11.0592M这么有零有整奇葩的频率主要是为了51单片机串口通信波特率能正好是个整数;STM32单片机有四个时钟,HSI、HSE、LSI、LSE,HIS是内部高速时钟(RC振荡器)8Mhz,经过倍频器后,单片机主频上限可以达到64Mhz,HSE是外部高速晶振8Mhz,经过倍频器后单片机主频上限可以达到72Mhz,LSI是内部低速40Khz时钟(RC振荡器),可以为RTC(实时时钟类似于DS1302)提供时钟,也可以为独立看门狗提供时钟,LSE是32.768khz晶振,为RTC提供时钟,32.768khz这么有零有整的奇葩频率源自于,32768= 2的15次方,RTC时钟内部有个2的15次方分频器,所以32768hz晶振经过分频后正好是1秒,这是整个瓜的来龙去脉。

另外着重提一点,内部时钟(HSI、LSI)都是RC振荡器,HSE、LSE是晶振,晶振和RC振荡器不是一回事儿,说STM32单片机有四个晶振是错误的说法,说有四个时钟没啥问题,外部晶振的稳定性要比内部RC振荡器好一些,外部晶振可以倍频让STM32单片机主频达到72Mhz,内部RC振荡器倍频只能达到64Mhz。

插播一段MCO(main clock output对应PA8引脚),这个引脚可以输出单片机当前工作的主频/二分之一主频,程序设定是72Mhz运行,假设8Mhz晶振虚焊,STM32单片机不是立即停止工作,而是会自动切换到内部RC振荡器采用64Mhz的主频继续工作,对于特别严苛的应用场合,72Mhz和64Mh还是有很大差异,需要知道当前MCU是否稳妥工作在72Mhz,通过MCO这个pin就可以抓取到(1/2PLLCLK)。

再插播一段分频器,2分频器,是把输入端频率除以二然后输出;选择器,是选择某一个作为输入后直接输出;倍频器把频率翻倍,像我当前用的i9-9900k CPU睿频5.0Ghz,这个5.0Ghz不是晶振直接搞到5.0Ghz,而是100Mhz晶振经过内部倍频电路翻50倍搞到5.0Ghz的。

STM32单片机的大部分外设都挂载在APB2、APB1总线上,GPIO、UART1、SPI1、ADC1、2、EXTI、TIM1都是APB2(72Mhz)的小弟,APB1(36Mhz)上挂载的是IIC1-2、CAN1-2、UART2-5、SPI2-2等,APB2上的外设用的频率多一些,毕竟很多小伙伴磨炼了多年也就止步于一LED灯大师。

GPIO口,通用输入输出口,51单片机P0、P1、P2、P3每组从0-7共8个IO口,STM32单片机,分为GPIOA-G,每组0-15共16个IO口,51单片机的IO口比较省心,要么置零要么置1,STM32的IO口花活儿多一些,整体分为两大类,输出类:(1)推挽模式,可以粗略理解为把IO口要么接单片机的VDD,要么接GND,IO口带载上限:25ma,点个灯没啥问题;(2)开漏模式,如果说VDD是IO口的头,开漏模式相当于掀开IO口的头盖骨,让用户去自定义(51单片机P0口:“啊这事儿我熟”),供电电压不再局限于MCU的3.3V,可以5V且通过更大的电流。(复用推挽/开漏是指有的IO口身兼数职,既可以当UART用,又可以当IO口用)。

输入模式:上拉、下拉、浮空、模拟输入,上拉(弱)置高,下拉(弱)置低,浮空啥也不接(默认浮空),模拟输入是使用ADC外设时配置IO口的模式。IO口还有速度选择:LOW、Medium、High,速度越低,功耗越低;IO口接按键,设置为上拉模式比较好,上拉模式的抗干扰能力比下拉强,上拉平时是高电平,来个尖峰干扰还是高电平;下拉平时是低电平,来个尖峰干扰就拉高了会导致误认为有按键按下,所以综合考虑,按键采用IO口上拉更稳妥。

审核编辑:汤梓红

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

    关注

    100

    文章

    7392

    浏览量

    553786
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371139
  • 编程
    +关注

    关注

    90

    文章

    3707

    浏览量

    96764
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ‌LMK02000精密时钟调节器技术文档总结

    。 每个时钟分配模块包括一个可编程分压器、一个相位同步电路、一个可编程延迟、一个时钟输出多路复用器以及一个LVDS或LVPECL输出缓冲器。这允许将参考的多个整数相关和相位调整副
    的头像 发表于 09-19 10:37 540次阅读
    ‌LMK02000精密<b class='flag-5'>时钟</b>调节器技术文档<b class='flag-5'>总结</b>

    ‌CDCE72010 高性能时钟同步器、抖动清除器和时钟分配器总结

    该CDCE72010是一款高性能、低相位噪声和低偏斜时钟同步器,可将VCXO(压控晶体振荡器)或VCO(压控振荡器)频率同步到两个参考时钟之一。时钟路径是完全可编程的,为用户提供了高度
    的头像 发表于 09-18 11:37 600次阅读
    ‌CDCE72010 高性能<b class='flag-5'>时钟</b>同步器、抖动清除器和<b class='flag-5'>时钟</b>分配器<b class='flag-5'>总结</b>

    ‌CDCE949-Q1 可编程时钟合成器技术文档总结

    CDCE949-Q1 是一款基于模块化 PLL 的低成本高性能可编程时钟合成器、乘法器和分频器。该器件从单个输入频率生成多达 9 个输出时钟。每个输出都可以在系统内针对高达 230MHz 的任何
    的头像 发表于 09-17 09:44 544次阅读
    ‌CDCE949-Q1 可<b class='flag-5'>编程</b><b class='flag-5'>时钟</b>合成器技术文档<b class='flag-5'>总结</b>

    ‌CDCE937-Q1/CDCEL937-Q1 可编程时钟合成器技术文档总结

    CDCE937-Q1 和 CDCEL937-Q1 器件是基于锁相环 (PLL) 的模块化可编程时钟合成器。这些器件提供灵活的可编程选项,例如输出时钟、输入信号和控制引脚,以便用户可以将
    的头像 发表于 09-16 15:36 534次阅读
    ‌CDCE937-Q1/CDCEL937-Q1 可<b class='flag-5'>编程</b><b class='flag-5'>时钟</b>合成器技术文档<b class='flag-5'>总结</b>

    ‌CDCE913-Q1和CDCEL913-Q1可编程时钟合成器技术文档总结

    CDCE913-Q1 和 CDCEL913-Q1 器件是基于锁相环 (PLL) 的模块化可编程时钟合成器。这些器件提供灵活的可编程选项,例如输出时钟、输入信号和控制引脚,以便用户可以根
    的头像 发表于 09-15 09:55 575次阅读
    ‌CDCE913-Q1和CDCEL913-Q1可<b class='flag-5'>编程</b><b class='flag-5'>时钟</b>合成器技术文档<b class='flag-5'>总结</b>

    ‌CDCEL824 可编程双PLL时钟合成器技术文档总结

    该CDCEL824是一款基于PLL的模块化低成本、高性能、可编程时钟 合成器、乘法器和除频器。它从单个输入生成多达四个输出时钟 频率。每个输出都可以在系统内编程,以达到 201 MHz
    的头像 发表于 09-14 10:13 822次阅读
    ‌CDCEL824 可<b class='flag-5'>编程</b>双PLL<b class='flag-5'>时钟</b>合成器技术文档<b class='flag-5'>总结</b>

    ‌CDCE813-Q1 可编程时钟合成器与抖动清除器技术文档总结

    CDCE813-Q1器件是一款基于锁相环(PLL)的模块化、低成本、高性能、可编程时钟合成器。它们从单个输入频率生成多达三个输出时钟。每个输出都可以使用集成的可配置PLL在系统内针对高达230MHz
    的头像 发表于 09-13 09:41 1074次阅读
    ‌CDCE813-Q1 可<b class='flag-5'>编程</b><b class='flag-5'>时钟</b>合成器与抖动清除器技术文档<b class='flag-5'>总结</b>

    STM32 入门工具选型攻略:新手别再盲目入手,选对了才能少走弯路

    入门嵌入式的你是不是也经历过这样的崩溃时刻?对着STM32datasheet上密密麻麻的寄存器手册,半天看不懂“GPIO输出模式”到底是啥意思;学“中断”,书上说“这是紧急情况的处理机制”,可真到
    的头像 发表于 08-11 17:29 629次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>入门</b>工具选型攻略:新手别再盲目入手,选对了才能少走弯路

    技能+1!如何在树莓派上使用C++控制GPIO

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程
    的头像 发表于 08-06 15:33 3573次阅读
    技能+1!如何在树莓派上使用C++控制<b class='flag-5'>GPIO</b>?

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料
    发表于 06-06 17:06 9次下载

    STM32F40xxx和STM32f41xx flash编程手册

    PM0081_STM32F40xxx and STM32F41xxx单片机编程手册
    发表于 06-06 17:02 4次下载

    为什么GPIO配置总是出问题?

    STM32开发中,GPIO(通用输入输出)配置看似简单,但在实际开发中,很多人常常会遇到这些困惑:明明按照教程配置了GPIO,为什么LED灯就是不亮?为什么有时候按键无法响应,或者响应很慢
    的头像 发表于 04-07 11:59 1367次阅读
    为什么<b class='flag-5'>GPIO</b>配置总是出问题?

    STM32开发入门进阶必备!《STM32嵌入式系统开发—基于STM32CubeMX和HAL库》新书发布!

    上市。高校教学推荐,STM32入门必读!图书介绍《STM32嵌入式系统开发——基于STM32CubeMX和HAL库》是一本介绍嵌入式系统中STM32
    的头像 发表于 04-03 14:54 1366次阅读
    <b class='flag-5'>STM32</b>开发<b class='flag-5'>入门</b>进阶必备!《<b class='flag-5'>STM32</b>嵌入式系统开发—基于<b class='flag-5'>STM32</b>CubeMX和HAL库》新书发布!

    GPIO使用教程 GPIO接口应用

    GPIO(General-Purpose Input/Output,通用输入/输出)接口是电子设备中的一个重要组成部分,主要用于控制和读取设备的数字信号。它通过简单的高(1)或低(0)电平来与系统
    的头像 发表于 01-31 10:10 5180次阅读

    GPIO错误排查与解决

    在嵌入式系统和微控制器编程中,通用输入输出(GPIO)是最常见的接口之一。然而,在使用GPIO时,我们可能会遇到各种错误。 1. 理解GPIO GP
    的头像 发表于 01-09 09:46 3716次阅读