SaltyFish's Bowl

感觉学习了51的一些基本知识后,可以考虑学习STM32了。
不过STM32真的比51麻烦,特开一帖,做一下学习过程的时候一些总结

  1. 开发环境搭建

    安装PlatformIO,在board 中选择和STM32平台安装即可

    PlatformIO_STM32_Board

  2. 点亮一个发光二极管

1
2
3
4
5
6
7
8
9
10
11
12
/*  VCC连接二极管阳极,PB2口连接二极管阴极 */
void main()
{
/* 启动GPIOB口时钟 */
*(unsigned int *)0X40021018 |= (1<<3);
/* 配置GPIOB_2口输出模式 */
*(unsigned int *)0X40011000 |= ( 1<<(4*2) );
/* 输出口清零 */
*(unsigned int *)0X4001100C &= ~( 1<<2 );
/* 点亮二极管 */
*(unsigned int *)0X4001100C |= ( 1<<2 );
}
  1. PlatformIO无法使用串口下载STM32解决方法

    修改~/.platformio/platforms/ststm32/builder/main.pyupload_protocol == "serial":修改为以下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    elif 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")
    ]

    https://img.vim-cn.com/95/6f94e4284a6699b3b06dcaeb34f2e2665f4157.png

    注意:这样的话需要在PlatformIO.ini中声明upload_speed,即下载的波特率

  1. 视频教程很多,不过学习的是思路,而不是程序

  2. 设置系统时钟步骤

    1、开启HSE ,并等待 HSE 稳定
    2、设置 AHB、APB2、APB1的预分频因子
    3、设置PLL的时钟来源,和PLL的倍频因子,设置各种频率主要就是在这里设置
    4、开启PLL,并等待PLL稳定
    5、把PLLCK切换为系统时钟SYSCLK
    6、读取时钟切换状态位,确保PLLCLK被选为系统时钟

  3. 提示NotADirectoryError: [Errno 20] Not a directory: 'xxxxxxx/.DS_Store'时,可以在根目录下执行find . -name '*.DS_Store' -type f -delete解决问题

  4. 当你发现你无论怎么调试都没有反应的时候,可以去排查一下是不是线接错了


扫码领红包

 评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Volantis 作为主题 , 总访问量为 字数统计:26.6k。 载入天数...载入时分秒...