STM32单片机(1) 总记 学习资料+参考手册+LED灯
【转载请注明出处:http://blog.csdn.net/leytton/article/details/37740913】
学习资料
普中科技单片机开发板EM3_V30原理图.pdf http://download.csdn.net/detail/leytton/7732219
STM32程序下载接线图
注意:
1、 如果不能自动下载程序,可以用手动复位的方法下载程序,按钮的操作方法:按下 RSK
按钮不放用另外手指按下 ISPK,然后,先松开 RSTK 再松开 ISPK 按钮。完成后,点击
下载软件的"下载"按钮即可完成程序下载。
2、 下载完成后要断开短路帽 BOTT1 有些程序才能正常运行
3、下载完成后程序没有运行,可按ARM上的RSTK键试试(Leytton:无意中发现的)
小技巧:库函数编程时编译比较慢,ReBuild会编译整个工程里的所有文件;如果只是修改了一个文件,再次编译就直接点Build(F7),只编译当前文件,速度就很快了。
GPIO口对应的引脚
主要函数源码讲解
/*******************************************************************************
*
* 软件功能: GPIO闪灯实验(软件延时方式)
*
*******************************************************************************/
#include "stm32f10x.h"
#include <stdio.h>
#include "delay.h"/*************************************************
函数: void RCC_Configuration(void)
功能: 复位和时钟控制 配置
参数: 无
返回: 无
**************************************************/
void RCC_Configuration(void)
{ErrorStatus HSEStartUpStatus; //定义外部高速晶体启动状态枚举变量RCC_DeInit(); //复位RCC外部设备寄存器到默认值RCC_HSEConfig(RCC_HSE_ON); //打开外部高速晶振HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待外部高速时钟准备好if(HSEStartUpStatus == SUCCESS) //外部高速时钟已经准别好{FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的用法.位置:RCC初始化子函数里面,时钟起振之后FLASH_SetLatency(FLASH_Latency_2); //flash操作的延时RCC_HCLKConfig(RCC_SYSCLK_Div1); //配置AHB(HCLK)时钟等于==SYSCLKRCC_PCLK2Config(RCC_HCLK_Div1); //配置APB2(PCLK2)钟==AHB时钟RCC_PCLK1Config(RCC_HCLK_Div2); //配置APB1(PCLK1)钟==AHB1/2时钟RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //配置PLL时钟 == 外部高速晶体时钟 * 9 = 72MHzRCC_PLLCmd(ENABLE); //使能PLL时钟while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL时钟就绪{}RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //配置系统时钟 = PLL时钟while(RCC_GetSYSCLKSource() != 0x08) //检查PLL时钟是否作为系统时钟{}}RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //允许GPIOB、AFIO时钟
}/*************************************************
函数: void GPIO_Configuration(void)
功能: GPIO配置
参数: 无
返回: 无
**************************************************/
void GPIO_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体/* Configure PE.0,PE.1,PE.2,PE.3,PE.4,PE.5,PE.6,PE.7 as Output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ; //选中待设置的 GPIO 管脚,使用操作符“|”可以一次选中多个管脚GPIO_Pin_0-15 GPIO_Pin_All全部GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIO_Speed 用以设置选中管脚的速率GPIO_Speed
//GPIO_Speed_10MHz 最高输出速率 10MHz; PIO_Speed_2MHz 最高输出速率 2MHz; GPIO_Speed_50MHz 最高输出速率 50MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //GPIO_Mode 用以设置选中管脚的工作状态
/*GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入 GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出 GPIO_Mode_AF_PP 复用推挽输出*/GPIO_Init(GPIOB, &GPIO_InitStructure);
}/*************************************************
函数: int main(void)
功能: main主函数
参数: 无
返回: 无
**************************************************/
int main(void)
{RCC_Configuration();GPIO_Configuration();delay_init(72);while(1){GPIO_SetBits(GPIOB,GPIO_Pin_0); //设置指定的数据端口位delay_ms(500);GPIO_ResetBits(GPIOB,GPIO_Pin_0); //清除指定的数据端口位delay_ms(500);}
}
转载于:https://www.cnblogs.com/leytton/p/8253384.html
STM32单片机(1) 总记 学习资料+参考手册+LED灯相关推荐
- SQL SERVER深入学习学习资料参考
SQL SERVER深入学习学习资料参考 1.微软Webcast<sql server 2000完结篇>. 尽管微软Webcast出了很多关于Sql Server的系列课程,但是最为深入讲 ...
- 学习资料参考:从深度学习到自然语言处理
北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共6058个字,10张图,预计阅读时间:16分钟. 注意:本文已经更新,新版结合深度学习简介和发展 ...
- 【STM32学习笔记-点亮LED灯】
STM32学习笔记-点亮LED灯 文章目录 STM32学习笔记-点亮LED灯 一.原理图分析 二.代码分析 1.mian函数 2.led.c函数 3.led.h函数 4.函数文件整理 5.LED_In ...
- 【0基础快速入门】Python学习快速参考手册
Python学习快速参考手册 目录 文章目录 Python学习快速参考手册 目录 @[toc] 下载 Python下载与配置 IDE下载与配置 第一章 · Python的基本语法 变量 数据类型 注释 ...
- java gpio_单片机基础——使用GPIO输出点亮一个LED灯
1. 准备工作 硬件准备 开发板 首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...
- 学习用树莓派驱动LED灯闪烁
学习用树莓派驱动LED灯闪烁 [前沿] ·认识GPIO编码 ·准备实验材料 ·实验电路连接 ·编写驱动程序 ·讲解其它的驱动方式(扩展篇) [实际操作] 一.认识GPIO编码 学习如何用树莓派驱动LE ...
- 单片机两个IO口控制三个LED灯
在项目中经常会遇到单片机IO口资源不够用的情况,那么如何让单片机的IO口利用最大化呢,这里分享一下用单片机两个IO口控制三个LED灯的几种方法. 方法一: S1和S2分别接单片机两个IO口, ...
- 嵌入式开发学习之--点亮LED灯(中)
上篇我们主要学习的是环境搭建和实际操作,这篇详细记录一下整个思考的过程. 首先,我们需要想一个问题,这个灯为什么会亮? 物理上来说,LED灯属于发光二极管,只要有正确的电压就会发亮.也就是说,我们烧写 ...
- 51单片机+ESP8266+Android APP实现局域网内控制LED灯
一.硬件设计 1.硬件选型 主控芯片:选用STC15W104.这款MCU比较小巧,控制3个LED灯的亮灭只需要3个IO即可,不足之处是没有串口,与ESP8266通信只能使用模拟串口,买了挺多的,先将就 ...
最新文章
- 虚拟串口工具_com0com
- 跟vczh看实例学编译原理——一:Tinymoe的设计哲学
- 解决System.Web.Script.Serialization导入失败
- VMware多虚拟机网络配置
- WebGL(四)—— 第一个WEBGL程序
- Python打印杨辉三角形 RUNOOB python练习题61
- golang python rpc_golang rpc的两种调用方法
- linux下的shell脚本,linux下shell脚本的学习
- 动态创建form传参
- Pytorch CUDA GPU运算模型训练缓慢的一个可能原因
- c 获取char*的长度_C/C++编程笔记:C语言字符串比较函数,超详细,值得收藏!...
- 【JY】ABAQUS混凝土CDP插件分享
- 暴雪与网易宣布停止合作,多家厂商争夺暴雪代理权
- 小游戏开发指南及过程中的难点问题
- RegularJS 0.2.12 发布,JavaScript MVC 框架
- 达梦8 DCA认证笔记
- 普通石粉的用途_“石粉”的多种用途
- 增肌粉和蛋白粉的区别
- 【ES6】es6新特性
- Vision Transformer 综述