感觉学习了51的一些基本知识后,可以考虑学习STM32了。
不过STM32真的比51麻烦,特开一帖,做一下学习过程的时候一些总结
开发环境搭建
安装PlatformIO,在
board
中选择和STM32平台安装即可点亮一个发光二极管
1 | /* VCC连接二极管阳极,PB2口连接二极管阴极 */ |
PlatformIO无法使用串口下载STM32解决方法
修改
~/.platformio/platforms/ststm32/builder/main.py
中upload_protocol == "serial":
修改为以下内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19elif upload_protocol == "serial":
def __configure_upload_port(env):
return basename(env.subst("$UPLOAD_PORT"))
env.Replace(
__configure_upload_port=__configure_upload_port,
UPLOADER="stm32flash",
UPLOADERFLAGS=[
"-g", board.get("upload.offset_address", "0x08000000"),
"-b", "$UPLOAD_SPEED", "-w"
],
UPLOADCMD='$UPLOADER $UPLOADERFLAGS "$SOURCE" "$UPLOAD_PORT"'
)
upload_actions = [
env.VerboseAction(env.AutodetectUploadPort, "Looking for upload port..."),
env.VerboseAction("$UPLOADCMD", "Uploading $SOURCE")
]注意:这样的话需要在
PlatformIO.ini
中声明upload_speed
,即下载的波特率
视频教程很多,不过学习的是思路,而不是程序
设置系统时钟步骤
1、开启HSE ,并等待 HSE 稳定
2、设置 AHB、APB2、APB1的预分频因子
3、设置PLL的时钟来源,和PLL的倍频因子,设置各种频率主要就是在这里设置
4、开启PLL,并等待PLL稳定
5、把PLLCK切换为系统时钟SYSCLK
6、读取时钟切换状态位,确保PLLCLK被选为系统时钟提示
NotADirectoryError: [Errno 20] Not a directory: 'xxxxxxx/.DS_Store'
时,可以在根目录下执行find . -name '*.DS_Store' -type f -delete
解决问题当你发现你无论怎么调试都没有反应的时候,可以去排查一下是不是线接错了