首页 > 其他分享 >STM32 Note

STM32 Note

时间:2022-10-19 02:11:05浏览次数:84  
标签:Note none 14 30 STM32 eabi arm 19T01

目录

  1. ST-LINK/V2 手册
  2. STM3F103C8T6最小系统版的参数
  3. stm32cubeide 一些BUG
    1. 编译出错1
    2. 坑:盗版 STM32
ST-LINK/V2 手册

手册可以从此处下载:[LINK]

下面是一些摘要:

STM3F103C8T6最小系统版的参数 stm32cubeide 一些BUG 编译出错1

你可能出现如下错误:

...
arm-none-eabi-gdb: /usr/lib/libncurses.so.5: version `NCURSES_5.3.20021019’ not found (required by arm-none-eabi-gdb)
...

原因是很有可能你用的不是一个 ST 公司适配过的编译工具,而你的环境中的库与之不兼容(比如说我的开发环境就是 Archlinux, 而不是 Ubuntu )。

而解决这个问题的方法也比较简单,就是使用自己平台的交叉编译工具链。参考 [link]

以下是摘要:

1. Window → Preferences
2. Search for “Toolchain Manager”, or locate it under STM32Cube → Toolchain manager
3. Assuming you already have arm-none-eabi installed, open a terminal and run which arm-none-eabi-gcc to get its location. Here it is under /usr/bin.
4. On the Toolchain Manager, click “Add Local…” button on the right, give it some name, leave the default arm-none-eabi- prefix as it is, then fill the Location with the location of your arm-none-eabi-* (possibly /usr/bin/). Click on Finish.
4. Back on the Toolchain Manager, select the toolchain you’ve just added and click the “Set Default” button on the right.

但是你本地的交叉编译工具怎么来?有三种方法:

  • 使用平台工具安装
  • 去 gun 官网下载已经编译好的
  • 自己编译

 

因为使用第一种方法对于我最简单因此我在这里记录下自己的安装方法:

pacman -S arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-gdb arm-none-eabi-newlib
坑:盗版 STM32

我在这两个东西上花了一天时间,原因在于我处于成本的考量买了淘宝上十块钱左右的 STM32F103C8T6 最小系统板和在咸鱼上购买了二手的 STLink/V2。而我的工作环境是 Linux, 而非 Windows, 因此导致我能直接找到的开发工具就是 STM32 观望的 IDE -- STM32CubeIDE, 和 Arduion。

最开始调试的问题,我连接上 STLink/V2 进行调试的时候一直报错(如下所示),我 google 了很多解决方法,都不行。(我现在还怀疑有一定原因可能是盗版 STLink 的原因,但这个等下一次正版 STM32 开发板到货再试一下)

...
Error in initializing ST-LINK device.
Reason: ST-LINK: Could not verify ST device! Abort connection.
...

我发现该日志是在 ./ST-LINK_gdbserver 工具打印出来的,因此反编译之跳过这段报错,还是出问题了,因此感觉问题并不是那么简单。后来找到 arduion 上也有 STLink 的烧录工具,因此找到编译好的工程 rogerclarkmelbourne/Arduino_STM32 这个工程,获取最新的 release 版本,发现还是报错,不过这次的错误变成了下面这样。

> ./stlink/st-flash --reset write ../../../BLINK/Debug/BLINK.bin 0x8000000

2022-10-19T01:30:14 INFO src/common.c: Loading device parameters....
2022-10-19T01:30:14 INFO src/common.c: Device connected is: F1 Medium-density device, id 0x20036410
2022-10-19T01:30:14 INFO src/common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
2022-10-19T01:30:14 INFO src/common.c: Attempting to write 13584 (0x3510) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08003400 erased
2022-10-19T01:30:14 INFO src/common.c: Finished erasing 14 pages of 1024 (0x400) bytes
2022-10-19T01:30:14 INFO src/common.c: Starting Flash write for VL/F0/F3 core id
2022-10-19T01:30:14 ERROR src/common.c: unknown coreid, not sure what flash loader to use, aborting!: 2ba01477
2022-10-19T01:30:14 WARN src/common.c: Failed to write flash loader to sram!
2022-10-19T01:30:14 ERROR src/common.c: init_flash_loader() == -1
stlink_fwrite_flash() == -1

后来一查才知道 2ba01477 是 CKS32 的 ID, 然后继续深入搜索发现不止有我一个人遇到这个问题,很多国外的同行也遇到了这种问题。但我看芯片的丝印写的是 stm32f103c8t6, 这就 TMD 恶心了。 后来翻到店家的历史记录才发现也有其他同行遇到了该问题,这里直接把店铺地址贴出来吧:https://item.taobao.com/item.htm?id=596331059208 REF: 其中 github / issue 地址, [CKS32: added CKS32F103C8T6 a stm32f103c8t6 clone with coreid 0x2ba01477]

后来继续深入查询发现淘宝上所有价格低于 23 元的该类型芯片都是国产替代料,而且重点是还有写商家都不会在购买时表明是否为国产。这里大家要注意了。 另外,我发现便宜的板子用的稳压芯片也是有问题的,纹波和精度都非常不稳定,如果大家对稳定性有要求,购买时也千万注意。

好了,既然知道是国产替代料,而且已经在淘宝和 amazon 上卖得这么泛滥了,那么不可能我烧录都不行吧,肯定有办法的,然后办法也是在上面 github 的 issue 中提到了,那就是在开源的 stlink 的烧录工具加上该 chipid 即可,而且最新的分支已经包含该提交,因此我只需要找到原始的 STLINK 仓库,自己编译一份固件出来即可。REF: stlink-org/stlink

另外,如果实在 windows 平台,烧录还是有很多其他方法的,这里仅仅是因为我的工作环境所限制导致我面对了这么多问题。

最后附上使用开元 stlink 开发套件烧录的命令:

/share/CODE/stm32/stlink | develop
> ./stlink/st-flash --reset write ../../../BLINK/Debug/BLINK.bin 0x8000000
原创文章,版权所有,转载请获得作者本人允许并注明出处 我是留白;我是留白;我是留白;(重要的事情说三遍) TOP BOT

标签:Note,none,14,30,STM32,eabi,arm,19T01
From: https://www.cnblogs.com/mojies/p/16804813.html

相关文章

  • STM32的串口通信程序
    1.流水灯的作业2.搭建STM32的开发环境(1)使用寄存器地址方式完成首先在Keil中新建工程,选择使用的开发板,此处我选择的是STM32F103C8。在SourceGroup中新建文件rfrf,代码......
  • 07.stm32最小系统版库函数点灯
    ......
  • 32 位MCU单片机资料 STM32L4R9ZIY6P规格 特点
    STM32L4+系列微控制器具有更高性能(高达120MHz)和更大嵌入式内存(高达2M字节的闪存和640K字节的SRAM)。STM32L4+具有更丰富的图形和连接功能,同时保持同类最佳的超低功耗。STM32L......
  • ARM 笔记(1018)-- STM32部分--14 通用定时器输入捕获
    12.4通用定时器输入捕获输入捕获的概念:输入捕获是什么意思?怎样实现的输入捕获?输入捕获捕获的是跳跃的信号,根据硬件连接关系,按键按下是上升沿,按键抬起是下降沿。如果想......
  • 【杂谈】想成为机器学习学霸?先学会做笔记吧(Evernote,BoostNote,Leanote等)
    今天聊聊记笔记这件事儿,在学习的过程中做好总结记录是非常重要的。作者|小满&有三编辑|小满&有三《人类简史》有一个有趣的现象描写:远古时期的智人是看什么就吃什么,会塞......
  • STM32固件IAP程序实现
    1.写在前面​IAP全称是InApplicationProgramming,IAP是用户自己的程序在运行过程中对UserFlash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产......
  • note
    1.缓存一致性协议缓存一致性问题:计算机在CPU与主存之间引入CPU缓存,以防止因为主存访问速度远低于CPU处理速度而导致的处理性能下降,但由此引出缓存一致性问题:并发环境下同......
  • 小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED
    @目录引言导读一、通信基础知识1.1通信到底传输的是什么?1.2比特率和波特率习题1.1双工和单工习题1.2串行和并行1.3异同通信和同步通信习题二、连接STM32单片机2.1编......
  • 入门级嵌入式单片机STM32F072R8T6 中文资料
    STM32F0入门级ARMCortex-M0MCU提供32位性能,并有STM32系列的主要特征,特别适合低成本产品应用。STM32F0MCU将实时性能、低功耗、以及STM32平台的先进架构与外......
  • OneNote 2019 右键菜单卡顿
    1.在Windows10中的右下角,右键点击`输入法`(即点击`中`或`英`的图标)2.选择`设置`3.选择`常规`4.界面滑到最下面,开启`使用以前的微软拼音输入法` 问题解决,On......