已经试了一下,吐槽这个软件的使用好麻烦啊
安装
然后先去安装对应的pack
这个鬼玩意里找对应的芯片,或者去官网上下载
我是在这里搜到芯片,再去官网下载一个驱动
https://www.keil.arm.com/packs/stm32f1xx_dfp-keil/boards/
会有一个安装包下载
安装好后,暴力点干脆重启机器生效
打开软件,新建一个项目
这里选择你的芯片
然后麻烦来了,
N多运行时环境要选择,作为小白,一脸的懵逼
查资料呗
这个核心库是必选。
startup库是一个必选。
gpio也是我自己选的,因为想测试
我有个stlink的像u盘一样的烧录器,插上电脑可以在设备管理器识别
ST-Link的驱动程序
STSW-LINK009 - 为Windows 7、Windows 8、Windows 10签署的ST-LINK、ST-LINK/V2、ST-LINK/V2-1 USB驱动 - 意法半导体STMicroelectronicshttps://www.st.com/zh/development-tools/stsw-link009.html#get-software有个exe下载安装后
然后给stlink接线,接线图百度可得,因为设备原因就不贴图了。
然后
debug配置中,右上角的use,选择st-link debugger,再点download,就成功了。
试了一下debug,问题是,跳出来的界面是汇编语言调试,我的代码是c的,看看怎么解决
后来发现这些都是头文件里的pack包中的代码,就不管了,只需要再c语言中添加断点就可以了。
我需要点亮led灯,那么需要添加gpio的使用,总是报宏没有定义
#include "stm32f10x_gpio.h"
终于知道为什么加头文件找不到库了
device外面那个gpio不能勾选,要勾选里面那个,然后就可以了。
编译通过,点灯代码待会贴出来
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include <stdio.h>//C:\Users\Administrator\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\StdPeriph_Driver\inc
void delay(uint32_t count)
{for (; count != 0; count--);
}int main(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);while (1){GPIO_SetBits(GPIOC, GPIO_Pin_13);delay(0xFFFFFF);GPIO_ResetBits(GPIOC, GPIO_Pin_13);delay(0xFFFFFF);}}
这段让led灯闪烁的代码,完美执行,、
led灯是主板中央预置的一个led,并不是我的引脚
所以继续修改代码,让我的引脚接led亮起来
最后找到了led灯,原来pin13是板子上做好的标记为pc13的灯。
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include <stdio.h>//C:\Users\Administrator\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\StdPeriph_Driver\inc
void delay(uint32_t count)
{for (; count != 0; count--);
}int main(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 启用GPIO端口A的时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // 设置要控制的引脚为PA5GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIO端口A的配置while (1){GPIO_SetBits(GPIOC, GPIO_Pin_13);GPIO_SetBits(GPIOA, GPIO_Pin_5); // 设置PA5引脚为高电平delay(0xFFFFF);GPIO_ResetBits(GPIOC, GPIO_Pin_13); GPIO_ResetBits(GPIOA, GPIO_Pin_5); // 设置PA5引脚为低电平delay(0xFFFFF);}}
这个是让5脚和13脚同时闪烁,发现一个标记C13的脚亮了。
所以,就算成功哦了吧,至于为啥是c13对应pin5,鬼知道,买板子的资料网盘都提示文件已经过期,就不去琢磨了,反正就那么点口,一个个试呗,或者哪天发现对应图了,再贴出来,再说一个厂家一个对应关系,也没必要去认真琢磨。
ok,就这样了,花了我快一周,目标达成。