完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言
基于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灯点亮与闪烁的原理图和代码。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
652浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
522浏览 3评论
539浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
508浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 11:51 , Processed in 0.783008 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号