历史上的今天
返回首页

历史上的今天

今天是: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 for(j=0;j<8500;j++);

}


int main(void)

{

LED_Init();

while(1)

{

LED2_ON;

//LED3_ON;

delay(200);

LED2_OFF;

//LED3_OFF;

delay(200);

}

}


总结

以上就是今天要讲的内容,本文仅仅简单介绍了基于STM32F103C8T6在Keil下编程实现LED灯点亮与闪烁的原理图和代码。

推荐阅读

史海拾趣

富捷(FOJAN)公司的发展小趣事

随着电子元器件市场的不断扩大,富捷电子积极实施产能扩张计划。自2020年起,公司相继启动了多个扩产项目,包括一期100亿产能生产基地项目建设和二期车规电阻产能扩充项目。这些项目的顺利实施,极大地提升了公司的生产能力和市场响应速度,有效满足了智能终端、5G、工业互联网等重要行业对电子元器件的旺盛需求。同时,富捷电子还通过优化生产流程、提升设备自动化水平等措施,进一步提高了生产效率和产品质量。

Deltrol Controls公司的发展小趣事

随着电子设备的日益复杂,对内部连接件的要求也越来越高。Deltrol Controls意识到,传统的连接方式已经无法满足行业的需求。为此,公司投入大量资金研发新型软管组件,该组件不仅具有优异的耐温、耐压性能,而且安装简便、维护方便。这一突破性的产品迅速赢得了客户的青睐,Deltrol Controls在电子行业的影响力也进一步扩大。

Bce Sud公司的发展小趣事

随着技术的成熟,Bce Sud开始积极拓展市场,与多家电子设备制造商建立了合作关系。通过与这些企业的紧密合作,Bce Sud的产品逐渐应用于智能手机、平板电脑等消费电子产品中。同时,公司还积极寻求与上下游企业的战略合作,共同推动产业链的升级与发展。

BALLUFF公司的发展小趣事

BALLUFF公司的历史可以追溯到1921年,由格布哈德·巴鲁夫(Gebhard Balluff)创建的一家机械修理厂开始。这家修理厂起初规模较小,但巴鲁夫凭借其对机械技术的精湛理解和不懈追求,逐渐将业务发展壮大。他通过不断的技术创新和产品升级,使得修理厂逐渐转型为一家专注于生产精密部件、车件和铣件的企业。这一转变不仅奠定了BALLUFF公司的工业基础,也为其日后在传感器领域的崛起打下了坚实基础。

Ferraz Shawmut(Mersen)公司的发展小趣事

2007年,Ferraz Shawmut收购了美国的General Electric公司的功率熔断器部门。这一收购不仅增强了公司在功率熔断器领域的实力,也进一步巩固了其在电气保护领域的领先地位。通过整合双方的技术和资源,Ferraz Shawmut推出了更多高性能、高品质的电气保护产品。

Carlo Gavazzi公司的发展小趣事

1984年,Carlo Gavazzi公司在瑞士成功上市,这是公司发展史上的一个重要里程碑。上市不仅为公司带来了更多的资金支持,也提高了公司的知名度和影响力。此后,公司利用资本市场的力量,进一步加快了业务扩展和技术创新的步伐。

问答坊 | AI 解惑

赛灵思ISE 设计套件 11.1 白皮书

作者:Michael Santarini 随着 Xilinx® ISE® 设计套件 11.1 的推出,赛灵思在优化设计方法、更好地满足不同技能客户的多样化需求, 以及帮助客户利用赛灵思 FPGA 目标设计平台进行创新设计方面迈出了一大步。赛灵思 ISE 设计套件 11.1同时 ...…

查看全部问答>

首块双曲面车顶太阳能电池英利问世

英利集团宣布:历经5个多月攻关,英利光伏应用技术研究院自主研发出全球第一块双曲面车顶用光伏电池板。 据介绍,这种电池板具有专利技术和自主知识产权,可将太阳能转化为电能储存在汽车蓄电池内,功率为180瓦。车顶安装光伏电池板的汽车依靠 ...…

查看全部问答>

关于函数写法与编译结果的讨论

请分析下面的结果: 1:函数  XX(结构体变量)2:函数  XX(结构体指针) 分别调用两个函数,请问在程序编译后,结果是否一样? 如果不一样为什么?…

查看全部问答>

我也来玩玩多线程

看着chenzhufly把多线程Photothreads在LPC1343上玩的有声有色,有贴为证https://bbs.eeworld.com.cn/viewthread.php?tid=103789,我也禁不住要试试。因为LPC1114同样资源紧张,呵呵 下面就一试。 同样我也参考了Photothreads的例程example-small, ...…

查看全部问答>

关于实时绘制手写笔轨迹的一个小问题

做了一个手写识别软件,用伪驱动的方法截获了全屏书写的轨迹。用手写笔在屏幕上书写的时候是可以收到轨迹信息的,也可以做出识别,但是手写笔在屏幕上画过的笔迹无法显示,在没有实现全屏书写的时候我在窗口里写实可以实时绘出手写轨迹的。下面是绘 ...…

查看全部问答>

找两名兼职的WinCE内核和驱动开发人员

找两名兼职的WinCE内核开发人员,要求熟悉Marvell Xscale 系列CPU的内核和驱动开发工作, 要求熟悉一款以上以下的CPU: PXA255,PXA270,PXA310,PXA300,PXA320,PXA168. 地点在北京.有PDA或智能手机开发经验的人最佳. 熟悉三星的S3C6410的也可以,我 ...…

查看全部问答>

NK.nb0文件是否包含有起始地址信息?

我知道NK.bin文件头中是包含有NK的起始地址信息的,不知道nb0文件是否有? 我现在想通过NK.nb0进行升级,但是升级后需要保存NK.nb0拷贝到内存的地址到NAND Flash中,不知道NK.nb0文件是否有这个信息?…

查看全部问答>

关于高速AD采样的系统设计问题

  各位高手,本人基于课题需要,打算开发设计一个高速AD采样系统, 也许需要外检测电路+独立AD模块+嵌入式CPU组合实现 主要有以下要求: 1. AD模块的采样+转换时间=10MHz 2. CPU工作主频足够高,CPU内开辟一个足够大的缓存区,通过 ...…

查看全部问答>

ST编译设置问题

在用ST工程时,编译设置改为: Memory 选择 Long Stack(+modsl) 就会出现下面问题: #error clnk Debug\\stm8s208.lkf:1 symbol f__stext not defined(Debug\\stm8_interrupt_vector.o ) The command: "clnk -m Debug\\stm8s208.map -l"C ...…

查看全部问答>