当前位置: 首页 > news >正文

【电子设计】按键LED控制与FreeRTOS

1. 安装Keilv5

打开野火资料,寻找软件包

解压后得到的信息

百度网盘 请输入提取码   提取码:gfpp

安装526或者533版本都可以

下载需要的 F1、F4、F7、H7 名字的 DFP pack 芯片包 安装完 keil 后直接双击安装

注册操作,解压注册文件夹后根据里面的图示步骤操作

打开说明

STM32用户选择下载MDK536

瑞萨用户选择下载更高版本MDK538A

安装完keil后关闭弹窗和整个keil 然后双击安装芯片包

注册相关请看KEIL注册压缩包内的图示操作

下载MDK536

等待ing……

安装成功!

2. 注册Keilv5

下载注册机(先关闭防火墙Windows系统如何关闭防火墙保姆式教程,超详细-CSDN博客)

以管理员身份运行Keil uVision5 ,打开

生成注册码注册

看到“步骤5” 的时候说明注册成功了。

3. 安装STM32芯片包

双击安装

安装成功之后,在KEIL5 的 Pack Installer 中就可以看到我们安装的包, 以后我们新建工程的时候,就有单片机的型号可选。

4. 用DAP仿真器下载程序

4.1. DAP仿真器简介

本书配套的仿真器为Fire-Debugger,遵循ARM公司的CMSIS-DAP标准,支持所有基于Cortex-M内核的单片机,常见的M3、M4和M7都可以完美支持。

Fire-Debugger支持下载和在线仿真程序,支持XP/WIN7/WIN8/WIN10这四个操作系统,免驱,不需要安装驱动即可使用,支持KEIL和IAR直接下载,非常方便。

4.2. USB线跟板子连接

4.3. 仿真器配置

在仿真器连接好电脑和开发板且开发板供电正常的情况下,打开编译软件KEIL,在魔术棒选项卡里面选择仿真器的型号,具体过程看图示:

Fire-Debugger遵循的是CMSIS-DAP标准,故选择CMSIS-DAP Debugger

选择默认配置的仿真器 

4.4. 选择目标板

选择Sectors擦除,如果选择Full Chip擦除则会非常慢。

勾选Reset and Run,则下载完程序会自动运行,不用手动复位。

4.5. 下载程序

如果前面步骤都成功了,接下来就可以把编译好的程序下载到开发板上运行。

要先点编译(Build),确认编译正确后再点击下载,下载程序不需要其他额外的软件,直接点击KEIL中的LOAD按钮即可。

5.  不依赖 FreeRTOS

5.1. 下载相应程序

 main.c

#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_exti.h" int main(void)
{LED_GPIO_Config();EXTI_Key_Config(); while(1)                            {}
}

stm32f10x_it.c 

#include "stm32f10x_it.h"
#include "bsp_led.h"
#include "bsp_exti.h"void NMI_Handler(void)
{
}void HardFault_Handler(void)
{while (1){}
}void MemManage_Handler(void)
{while (1){}
}void BusFault_Handler(void)
{while (1){}
}void UsageFault_Handler(void)
{while (1){}
}void SVC_Handler(void)
{
}void DebugMon_Handler(void)
{
}void PendSV_Handler(void)
{
}void SysTick_Handler(void)
{
}void KEY1_IRQHandler(void)
{if(EXTI_GetITStatus(KEY1_INT_EXTI_LINE) != RESET) {	LED1_TOGGLE;EXTI_ClearITPendingBit(KEY1_INT_EXTI_LINE);     }  
}void KEY2_IRQHandler(void)
{if(EXTI_GetITStatus(KEY2_INT_EXTI_LINE) != RESET) {LED2_TOGGLE;EXTI_ClearITP
http://www.lryc.cn/news/485863.html

相关文章:

  • JMeter中添加请求头
  • VMD + CEEMDAN 二次分解,CNN-LSTM预测模型
  • 【Linux系统编程】第四十六弹---线程同步与生产消费模型深度解析
  • VoIP是什么?
  • MySQL 中的集群部署方案
  • 《设计模式》创建型模式总结
  • Conda安装与使用中的若干问题记录
  • 人力资源招聘系统的革新之路:从传统到智能的转变
  • Python网络爬虫与数据采集实战——网络协议与HTTP
  • 从零开始的c++之旅——二叉搜索树
  • CSS回顾-基础知识详解
  • Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别
  • 低代码平台:跨数据库处理的重要性与实现方式
  • 【jvm】如何破坏双亲委派机制
  • ReactPress与WordPress:一场内容管理系统的较量
  • 网络安全练习之 ctfshow_web
  • 在 Service Worker 中caches.put() 和 caches.add()/caches.addAll() 方法他们之间的区别
  • UNIAPP发布小程序调用讯飞在线语音合成+实时播报
  • 跳房子(弱化版)
  • ubuntu22 安装 minikube
  • STM32 | 超声波避障小车
  • 打造旅游卡服务新标杆:构建SOP框架与智能知识库应用
  • 通过脚本,发起分支合并请求和打tag
  • 【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比分析...
  • 网络安全在线网站/靶场:全面探索与实践
  • Ceph 中Crush 算法的理解
  • D70【 python 接口自动化学习】- python 基础之数据库
  • C# LINQ数据访问技术
  • 【JavaSE线程知识总结】
  • FreeRTOS内存管理