新手学习须注意的问题

2023-10-31

注意事项
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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

新手学习须注意的问题 的相关文章

  • GCC - 如何停止链接 malloc?

    我正在努力将我的代码缩减到最小的骨架大小 我使用的是只有 32k 闪存的 STM32F0 需要很大一部分闪存用于数据存储 我的代码已经有大约 20k 闪存大小 其中一些是由于使用了 STM32 HAL 函数 我可以在以后需要时对其进行解释和
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 140-基于stm32单片机智能晾衣杆控制系统Proteus仿真+源程序

    资料编号 140 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 光敏传感器 蜂鸣器 LED灯 制作一个基于stm32单片机智能晾衣杆控制系统Proteus仿真 2 通过光敏传感器
  • Push_back() 导致程序在进入 main() 之前停止

    我正在为我的 STM32F3 Discovery 板使用 C 进行开发 并使用 std deque 作为队列 在尝试调试我的代码 直接在带有 ST link 的设备上或在模拟器中 后 代码最终在 main 中输入我的代码之前在断点处停止 然
  • STM32F4 通过软复位跳转到引导加载程序,无需 BOOT0 和 BOOT1 引脚

    我问这个问题是因为可以在这里找到类似问题的答案 通过应用程序跳转到 STM32 中的引导加载程序 即从用户闪存在引导模式下使用引导 0 和引导 1 引脚 用户 JF002 JF002回答 当我想跳转到引导加载程序时 我在其中一个备份寄存器中
  • 匹配 STM32F0 和 zlib 中的 CRC32

    我正在研究运行 Linux 的计算机和 STM32F0 之间的通信链路 我想对我的数据包使用某种错误检测 并且由于 STM32F0 有 CRC32 硬件 并且我在 Linux 上有带有 CRC32 的 zlib 所以我认为在我的项目中使用
  • STM32超声波——HC_SR04

    文章目录 一 超声波图片 二 时序图 三 超声波流程 四 单位换算 五 取余计算 六 换算距离 七 超声波代码 一 超声波图片 测量距离 2cm 400cm 二 时序图 1 以下时序图要先提供一个至少10us的脉冲触发信号 告诉单片机我准备
  • 物联网网关

    物联网网关是 连接物联网设备和互联网的重要桥梁 它负责将物联网设备采集到的数据进行处理 存储和转发 使其能够与云端或其它设备进行通信 物联网网关的作用是实现物联网设备与云端的无缝连接和数据交互 物联网网关功能 数据采集 物联网网关可以从物联
  • [MM32硬件]搭建灵动微MM32G0001A6T的简易开发环境

    作为学习单片机的经典 自然是通过GPIO点亮LED 或者是响应按钮的外部中断例程 这我们看看SOP8封装的芯片MM32G0001A6T得引脚 除了VDD和GND固定外 我们可以使用PA14 PA1 PA13 PA15 PA2 PA3这六个G
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • 特殊寄存器

    特殊寄存器 文章目录 前言 一 背景 二 2 1 2 2 总结 前言 前期疑问 STM32特殊寄存器到底是什么 特殊寄存器怎么查看和调试代码 本文目标 记录和理解特殊寄存器 一 背景 最近在看ucosIII文章是 里面提到特殊寄存器 这就进
  • 核心耦合内存在 STM32F4xx 上可执行吗?

    尝试从 STM32F429s CCM 运行代码 但每当我命中 CCM 中的第一条指令时 我总是会遇到硬故障 并且 IBUSERR 标志被设置 该指令有效且一致 STM32F4xx 是否可能不允许从 CCM 执行 数据访问效果良好 alios
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • GCC 变量映射和 MISRA-C

    我主要知道两种使用 GCC 声明内存映射寄存器的方法 有许多变体 使用双字段 每个外设的数据结构等 要么使用初始化为正确地址的指针 例如volatile uint32 t pMyRegister uint32 t 0xDEADBEEFUL

随机推荐

  • 开源情报分析(OSINT)CTF社工类2万字题详细教程,请不要利用本文章做不道德的事,后果概不负责

    简介 现在国内外最新的ctf比赛都有这个项目了 列如给你一个照片找地址或者人名 给你一个名字找他的社交账号什么的 考验选手的信息收集与社工能力 这篇文章对这类题型做一个基础的总结 以后遇到这种题型就知道该怎么做了 本文章会教你们关于查找有关
  • Protobuf(Protocol Buffers)超详细入门教程(跨平台序列化, Java)——更新于2022.01

    目录 相关教程 相关文献 安装 C Installation Unix 环境 Protobuf3 0基础上手例子 相关教程 Protobuf Protocol Buffers 超详细入门教程 跨平台序列化 C CMake 更新于2022 0
  • 经典的图像去噪算法_NeuNet2020:BRDNet(开源)使用深度CNN和批量归一化进行图像去噪...

    最近哈工大的研究团队于2020年在国际著名的人工智能杂志 神经网络 上发表了 利用深度CNN进行批量重正化的图像去噪 作者信息 在论文中 作者提出了一种新的图像去噪网络 称为批重归一化去噪网络 BRDNet 可以解决硬件资源受限条件处理数据
  • 开发板的上电锁存

    1 开发板的软启动 开发板的电源开关用两种 1 拨码开关 打到一侧则接通 打到另一侧则关闭 开发板只有关闭和运行两种状态 电路设计简单 但是不能实现休眠模式 低功耗模式 2 按键 按下时通电 弹起时断电 但是我们可以给供电电路增加置锁电路
  • windbg双机调试的连接设置和常见问题(真机和VMware虚拟机间的连接)

    一些废话 在做内核开发的时候 windbg给我们提供了方便 但是windbg要求内核调试是双机调试 所以我们首先面对的是调试机和被调试机的连接问题 相信大部分开发人员都是用实体机开发好代码 放到虚拟机中运行 并在实体机中运行windbg对虚
  • linux网络编程(五)epoll进阶

    文章目录 1 事件模型 1 1 ET模式 1 2 LT模式 1 3 比较 2 实例一 3 实例二 4 实例三 1 事件模型 EPOLL事件有两种模型 Edge Triggered ET 边缘触发只有数据到来才触发 不管缓存区中是否还有数据
  • ESP8266云端数据加密保护

    启用mosquitto上加密 要在mosquitto上启用加密 您首先需要拥有证书 您可以从发行证书的公司购买它们 也可以将它们自己生成为自签名证书 安装OpenSSL包 首先 确认您已安装openssl软件包 并且它具有较新的版本 1 0
  • MySQL中数据库重命名

    今天同事让帮忙把线上的数据库重命名 恩 数据库重命名 这种需求的概率小之又小 今天居然还真给碰到了 表重名的话是rename table old table to new table So 库的重命名最简单快捷的办法是 rename old
  • yolov7裁剪出识别结果

    开头先附上两篇有关yolov7的使用教程 yolov7保姆级教程 链接 yolov7数据增强与数据划分 链接 本篇主要内容为 在识别出来目标照片后 对目标进行裁剪 1 准备照片与标签 标签的生成在执行代码中加入 save txt 完整命令如
  • 雪花ID生成

    package com zfsw spzx access service import lombok extern slf4j Slf4j import org apache commons lang3 StringUtils import
  • 教师节到了,用Python做了个非常好用的学生点名系统

    教师节到了 用Python做了个非常好用的学生点名系统 教师节到了 祝伟大的老师们教师节快乐 前言 我的亲人和朋友里有很多老师 根据我的调查 现在的学生大部分都很积极 会主动举手回答问题 但是 也会遇到一些不好的情况 比如年级越高主动举手的
  • esp学习笔记一环境搭建

    文章目录 开发板资料 环境安装 编译程序 wsl终端 开发板资料 https docs espressif com projects esp idf zh CN latest get started get started devkitc
  • eladmin代码生成详细过程

    eladmin代码生成详细过程 笔记介绍 大家好 这里是千寻简笔记 我是作者星辰 笔记内容整理并发布 内容有误请指出 笔记源码已开源 前往Gitee搜索 chihiro notes 感谢您的观看 作者各大平台直链 GitHub Gitee
  • 基于Android网上在线学生选课系统

    老师要求 1 调研了解学生选课的流程 并做好需求分析 2 APP模式 3 设计角色 学生 工作人员等 4 工作人员管理课程信息 教师信息 学生信息 选课信息等 设置选课时间 选课班级等 5 学生登录 选课 查询成绩等 6 扩展功能 短信提示
  • windows scp下载较大文件出错

    在 ssh config中加入 Host 断开时重试连接的次数 ServerAliveCountMax 10 每隔30秒自动发送一个空的请求以保持连接 ServerAliveInterval 30 参考 https zhuanlan zhi
  • idea 2023.1设置:字体设置及自动调整大小

    一 原界面截图 二 修改字体设置 2 1 Font设置字体及大小 与下面相比 能调整字体和行高 2 2 鼠标滚轮调整字体大小 与上面相比 Ctrl 滑轮 只能调整字体大小 如果找不到 可直接搜 wheel 三 修改后界面截图 组合键在修改字
  • 《算法二》选择排序算法及它的时间复杂度

    1 选择排序算法 选择排序算法的时间复杂度为O N 2 选择排序算法规则 1 指定位置的数和后面的数比较 2 如果指定位置的数大 则两个数交换位置 3 向后移动一个位置 和指定位置的数进行比较 假设数组大小 n 第一轮比较n 1次 最小的数
  • 【如何训练一个中英翻译模型】LSTM机器翻译模型部署之ncnn(python)(五)

    系列文章 如何训练一个中英翻译模型 LSTM机器翻译seq2seq字符编码 一 如何训练一个中英翻译模型 LSTM机器翻译模型训练与保存 二 如何训练一个中英翻译模型 LSTM机器翻译模型部署 三 如何训练一个中英翻译模型 LSTM机器翻译
  • Pytorch 基础之张量合并与分割

    本次介绍一下 Tensor 张量合并与分割常用的一些方法 1 torch cat tensors dim 0 out None Tensor 方法释义 对除了要合并维度之外 其它维度 shape 都一样的 tensor 序列 数组或列表 进
  • 新手学习须注意的问题

    注意事项 1 最新版本的MDK软件Keil的编译器版本已更新到v6 且与v5版本不兼容 之前老的项目编译使用v6版编译器都会出错 建议使用老版本的Keil 如v5 36等 单纯安装v5版本的编译器比较麻烦 Keil v536同时自带v5 v