历史上的今天
今天是:2024年12月16日(星期一)
2021年12月16日 | STM32 Keil下编程实现LED灯点亮与闪烁
2021-12-16 来源:eefocus
前言
基于STM32F10C8T6在Keil下编程实现LED灯点亮与闪烁
一、原理图
1.STM32F103C8T6
STM32F103C8T6是ST在2007年发布的一款MCU,截止目前ST已经发布了速度高达400MHz的STM32H7。三点好处,一是封装比较大,方便初学者焊接,二是价格低廉,学习成本比较低,三是网上有大量的资料供初学者学习使用。

2.LED2
LED2控制一个绿色通讯指示灯,管脚为PB3。

3.LED3
LED3控制8个小灯点亮,管脚为PC13。

二、Keil代码
1.Led.h
代码如下:
#ifndef _LED_H_
#define _LED_H_
#include "stm32f10x.h"
//宏定义
#define LED2_GPIO GPIOB //指定LED2端口为GPIOB
#define LED2_Pin GPIO_Pin_3 //指定GPIO_Pin_3引脚为LED2_Pin
#define LED3_GPIO GPIOC //指定LED3端口为GPIOC
#define LED3_Pin GPIO_Pin_13//指定GPIO_Pin_13引脚为LED3_Pin
#define LED2_ON LED2_GPIO->BRR = LED2_Pin //点亮LED2
#define LED2_OFF LED2_GPIO->BSRR = LED2_Pin //熄灭LED2
//#define LED3_ON LED3_GPIO->BRR = LED3_Pin //点亮LED3
//#define LED3_OFF LED3_GPIO->BSRR = LED3_Pin //熄灭LED3
//全局函数声明
void LED_Init(void); //初始化
void LED_ON_OFF(void);//亮灭
void LED3_ON_Frequency(uint8_t Light_Frequency);
//void LED2_ON_Frequency(uint8_t Light_Frequency);
#endif
2.Led.c
代码如下:
#include"stm32f10x.h"
#include"Led.h"
//函数功能:LED初始化
//定义Void LED Init函数,赋值
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_Structure;//调用GPIO_Structure结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //引脚GPIOB挂载在APB2上的外设作为输入参数
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//引脚GPIOC挂载外设时钟APB2总线库函数
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//引脚AFIO挂载外设时钟APB2总线库函数
//改变指定管脚映射GPIO Remap_swj_disable swj完全禁用。(JTAG+SW-DP)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
//改变指定管脚的映射,GPIO Remap_swj_jtagdisable,JTAG-DP禁用, +SW-DP使能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
//LED2需要这两条命令,LED3不需要加 注意:LED2使用PB3端口,LED3使用PC13端口。
//因为STM32F103 MCU复位后,PA13、14、15和PB3、4默认配置为JTAG功能(主要用于芯片内部测试。)
//为了充分利用MCU I/O口的资源,会把这些端口设置为普通端口。
GPIO_Structure.GPIO_Pin = LED2_Pin; //LED2指定引脚
GPIO_Structure.GPIO_Speed = GPIO_Speed_50MHz;//指定速度为50MHz
GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP; //指定工作方式OUT推挽输出
GPIO_Init(LED2_GPIO,&GPIO_Structure);
//GPIO_Init(LED3_GPIO,&GPIO_Structure);//调用GPIO_Init 传入&GPIO_Structure(对该引脚初始化)
}
3.main.c
代码如下:
#include"Led.h"
#include"stm32f10x.h"
//typedef unsigned char uint8_t;
//typedef unsigned short int uint16_t;
//typedef unsigned int uint32_t;
//typedef unsigned _INT64_uint64_t;
static void delay(uint16_t n )//延时程序
{
uint16_t i,j;
for(i=0;i } int main(void) { LED_Init(); while(1) { LED2_ON; //LED3_ON; delay(200); LED2_OFF; //LED3_OFF; delay(200); } } 总结 以上就是今天要讲的内容,本文仅仅简单介绍了基于STM32F103C8T6在Keil下编程实现LED灯点亮与闪烁的原理图和代码。
史海拾趣
|
作者:Michael Santarini 随着 Xilinx® ISE® 设计套件 11.1 的推出,赛灵思在优化设计方法、更好地满足不同技能客户的多样化需求, 以及帮助客户利用赛灵思 FPGA 目标设计平台进行创新设计方面迈出了一大步。赛灵思 ISE 设计套件 11.1同时 ...… 查看全部问答> |
|
英利集团宣布:历经5个多月攻关,英利光伏应用技术研究院自主研发出全球第一块双曲面车顶用光伏电池板。 据介绍,这种电池板具有专利技术和自主知识产权,可将太阳能转化为电能储存在汽车蓄电池内,功率为180瓦。车顶安装光伏电池板的汽车依靠 ...… 查看全部问答> |
|
做了一个手写识别软件,用伪驱动的方法截获了全屏书写的轨迹。用手写笔在屏幕上书写的时候是可以收到轨迹信息的,也可以做出识别,但是手写笔在屏幕上画过的笔迹无法显示,在没有实现全屏书写的时候我在窗口里写实可以实时绘出手写轨迹的。下面是绘 ...… 查看全部问答> |
|
找两名兼职的WinCE内核开发人员,要求熟悉Marvell Xscale 系列CPU的内核和驱动开发工作, 要求熟悉一款以上以下的CPU: PXA255,PXA270,PXA310,PXA300,PXA320,PXA168. 地点在北京.有PDA或智能手机开发经验的人最佳. 熟悉三星的S3C6410的也可以,我 ...… 查看全部问答> |
|
我知道NK.bin文件头中是包含有NK的起始地址信息的,不知道nb0文件是否有? 我现在想通过NK.nb0进行升级,但是升级后需要保存NK.nb0拷贝到内存的地址到NAND Flash中,不知道NK.nb0文件是否有这个信息?… 查看全部问答> |
|
各位高手,本人基于课题需要,打算开发设计一个高速AD采样系统, 也许需要外检测电路+独立AD模块+嵌入式CPU组合实现 主要有以下要求: 1. AD模块的采样+转换时间=10MHz 2. CPU工作主频足够高,CPU内开辟一个足够大的缓存区,通过 ...… 查看全部问答> |




