安装keil后记得添加pack
MDK5 Software Packswww.keil.com
我的是f4 ,https://detail.tmall.com/item.htm?spm=a21wu.10013406.0.0.43037b04KWn3X8&id=524365759675 这块开发板

下载好后在keil5的安装位置双击安装即可。
学习 STM32 最好的方法是用固件库,这里的固件库是指“STM32标准函数库”(STD库),关于库,有STD库和HAL库之分,好像新版的都使用HAL库,我这里鉴于条件原因,暂时先选择STD库·。
F4建议是不要使用串口下载,好像是说会更改寄存器什么的,然后后面就容易下载不进去。之前的串口下载助手是这样的,现在不知道有没有开发出合适的。
keil5打开工程出现:“Loading PDSC Debug 。。。”
参考:https://blog.csdn.net/weixin_40779546/article/details/81940587 可以解决。
然后直接打开野火的固件库的程序,先把点亮led的程序写进用dap方式写入开发板中,闪烁无误,说明没啥问题。
然后反手下个ad查看工程师这边的原理图,查看做出来的实验板上的的led接的是哪个io口,然后直接对源程序进行修改。
这里,我的LED2对应的是PA0端口,所以我直接修改程序为PA0,这里注意时钟总线上的也要根据手册进行相应的修改。
这里有个端口时钟的概念:
调用 RCC_AHB1PeriphClockCmd函数开启 GPIO端口时钟,使用 GPIO之前必须开启 对应端口的时钟。使用 RCC_APB2PeriphClockCmd函数开启 USART 时钟。
就比如:
#define LED1_GPIO_CLK RCC_AHB1Periph_GPIOH
#define LED2_GPIO_CLK RCC_AHB1Periph_GPIOH
#define LED3_GPIO_CLK RCC_AHB1Periph_GPIOH
RCC_AHB1PeriphClockCmd ( LED1_GPIO_CLK| LED2_GPIO_CLK| LED3_GPIO_CLK, ENABLE);
你要使用GPIOH上的端口,就要开启相应的时钟。而且配置的时候一般都是先配置时钟,然后再配置GPIO。这里使用 或操作 同时配置多个引脚。
进入debug setting后显示:
swd/jtag communication failure(也就是说没有连接到设备)
然后尝试一直按复位键:可以找到设备了,但是下载时显示下面错误:

额,然后辗转反侧,发现原来是接线松了。这里由于是另外的工程师设计的swd接口,和野火的不一致,所以这里我用杜邦线接过去,以为黑胶布黏上就没啥问题了,结果还是出问题了。
期间还出现一下子找得到设备,一下子找不到的情况,所以我就觉得可能是线的问题,然后下载的时候按了一下就好了。
这里只用了4根线,rst线没接(这个可能是下载后自动重启的功能)。 3.3v-3.3v TMS-SWDIO TCL-SWCLK GND-GND
这样下来我的第一个led灯就可以闪烁了。
然后下面是我根据野火改编的程序:
main.c
#include "stm32f4xx.h"
#include "./led/bsp_led.h"
void Delay(__IO u32 nCount);
int main(void)
{
LED_GPIO_Config();
while (1)
{
LED2( ON );
Delay(0xFFFFFF);
LED2( OFF );
Delay(0xFFFFFF);
}
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
bsp_led.c
#include "./led/bsp_led.h"
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd (LED2_GPIO_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = LED2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);
LED_RGBOFF;
}
bsp_led.h
#ifndef __LED_H
#define __LED_H
#include "stm32f4xx.h"
#define LED2_PIN GPIO_Pin_0
#define LED2_GPIO_PORT GPIOA
#define LED2_GPIO_CLK RCC_AHB1Periph_GPIOA
#define ON 0
#define OFF 1
#define LED2(a) if (a)
GPIO_SetBits(LED2_GPIO_PORT,LED2_PIN);
else
GPIO_ResetBits(LED2_GPIO_PORT,LED2_PIN)
#define digitalHi(p,i) {p->BSRRL=i;}
#define digitalLo(p,i) {p->BSRRH=i;}
#define digitalToggle(p,i) {p->ODR ^=i;}
#define LED2_TOGGLE digitalToggle(LED2_GPIO_PORT,LED2_PIN)
#define LED2_OFF digitalHi(LED2_GPIO_PORT,LED2_PIN)
#define LED2_ON digitalLo(LED2_GPIO_PORT,LED2_PIN)
#define LED_RGBOFF LED2_OFF;
void LED_GPIO_Config(void);
#endif /* __LED_H */
OK,就到这里啦。
欢迎教练讨论。
最后
以上就是缓慢猫咪最近收集整理的关于keil5 仿真usart窗口没有限制_写项目第一步:装keil5软件,用板子点亮第一个led...的全部内容,更多相关keil5内容请搜索靠谱客的其他文章。
发表评论 取消回复