新手学习须注意的问题

本文介绍了STM32学习过程中应注意的问题,包括Keil MDK的版本选择,ST-Link的固件更新步骤,GPIO的配置与使用,以及STM32时钟系统的概述。强调了GPIO的初始化、输出模式以及系统时钟的配置要点。
AI助手已提取文章相关产品:

注意事项
1.最新版本的MDK软件Keil的编译器版本已更新到v6,且与v5版本不兼容。之前老的项目编译使用v6版编译器都会出错,建议使用老版本的Keil(如v5.36等)。单纯安装v5版本的编译器比较麻烦。Keil v536同时自带v5、v6两个版本的编译器。
MDK下载地址(536为版本号):https://armkeil.blob.core.windows.net/eval/MDK536.EXE
2.使用STLink下载程序时,每次首次打开并连接开发板时都要在“Flash Download”界面中设置“Programming Algorithm”。
3.ST-Link升级固件时报错“ST-link is not in the DFU mode”:
        ①拔掉stlink
        ②插上stlink(需要确保stlink没有连上MCU,或者把实验板关机)
        ③不要搞别的,直接点击ST-LINK->Firmware update->device connect

GPIO内容总结
1.上电复位后,GPIO默认为浮空状态,部分特殊功能引脚为特定状态。IO口不能直接驱动大功率器件。IO口的电流很小,一般只做判断或基本驱动,需要会外接三极管放大电流。
2.输出模式:
        ①推挽输出:可以输出强高低电平,连接数字器件 。
        ②开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。
3.GPIO_Init函数初始化
        GPIO_InitTypeDef  GPIO_InitStructure;//这一行必须放在第一行
        //①使能GPIOF时钟
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
      //②GPIOF9,F10初始化设置
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO口
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
      GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOF9,F10
        //③IO口操作,设置高电平(低电平:GPIO_ResetBits())。这里也可以使用位段输出。
        GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
        位段输出定义:(led.h头文件中定义)
        #define LED0 PFout(9)
        #define LED1 PFout(10)

时钟系统内容总结
1. STM32有5个时钟源:HSI、HSE、LSI、LSE、PLL。
     ①HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可直接作为系统时钟或者用作PLL时钟输入。
    ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。
    ③LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。
    ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。可作为RTC的时钟源。
    ⑤PLL为锁相环倍频输出。STM32F4有两个PLL:
主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟:
        第一个输出PLLP用于生成高速的系统时钟(最高168MHz)
        第二个输出PLLQ用于生成USB OTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。
专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。
2. 系统时钟SYSCLK可来源于三个时钟源:
     ①HSI振荡器时钟  ②HSE振荡器时钟  ③PLL时钟
3.STM32F4时钟信号输出MCO1(PA8)和MCO2(PC9)。
        MCO1:用户可以配置预分频器(1~5)向MCO1引脚PA8输出4个不同的时钟源:HIS、LSE、HSE、PLL
        MCO2:用户可以配置预分频器(1~5)向MCO2引脚PC9输出4个不同的时钟源:HSE、PLL、SYSCLK、PLLI2S
      MCO最大输出时钟不超过100MHz。PLL=8MHz*N/(M*P)=8MHz*336/(8*2)=168MHz
4.任何一个外设在使用之前,必须首先使能其相应的时钟。
5.最常用的几个寄存器:RCC_CR、RCC_PLLCFGR、RCC_CRGR、RCC_AHB1ENR三个、RCC_APB1ENR两个。
注意:固件库里面基本没有调用HSI,HSE等时钟源配置函数,因为默认系统时钟初始化是在SystemInit里面设置,它是直接操作寄存器来设置的。
6.系统时钟初始化之后的状态:
        SYSCLK(系统时钟)                  =168MHz
        AHB总线时钟(HCLK=SYSCLK)           =168MHz
        APB1总线时钟(PCLK1=SYSCLK/4)        =42MHz
        APB2总线时钟(PCLK2=SYSCLK/2)        =84MHz
        PLL主时钟                            =168MHz
        初始化之后可以通过变量SystemCoreClock获取系统变量。如果SYSCLK=168MHz,那么变量SystemCoreClock=168000000。
7.Systick是24位倒计时定时器,常用来做延时,或实时系统的心跳时钟。捆绑在NVIC中,用于产生SYSTICK异常。

GPIO引脚使用记录
LED灯:PF9,PF10
蜂鸣器:PF8
按键:KEY_UP--PA0;KEY0\1\2--PE2\3\4

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值