1.芯片手册中的LED电路图

2.官网手册


3.代码演示
3.1 stm32f10x.h
头文件
| #ifndef _STM32F10X_H |
| #define _STM32F10X_H |
| |
| |
| |
| #define PERIPH_BASE ((unsigned int)0x40000000) |
| |
| #define APB1PERIPH_BASE PERIPH_BASE |
| |
| #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) |
| |
| #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) |
| |
| |
| |
| #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) |
| |
| #define GPIOB_CRL *(unsigned int*)(GPIOB_BASE+0x00) |
| |
| #define GPIOB_CRH *(unsigned int*)(GPIOB_BASE+0x04) |
| #define GPIOB_IDR *(unsigned int*)(GPIOB_BASE+0x08) |
| |
| #define GPIOB_ODR *(unsigned int*)(GPIOB_BASE+0x0C) |
| #define GPIOB_BSRR *(unsigned int*)(GPIOB_BASE+0x10) |
| #define GPIOB_BRR *(unsigned int*)(GPIOB_BASE+0x14) |
| #define GPIOB_LCKR *(unsigned int*)(GPIOB_BASE+0x18) |
| |
| |
| #define RCC_BASE (AHBPERIPH_BASE + 0x1000) |
| |
| #define RCC_APB2ENR (*(unsigned int *)(RCC_BASE + 0X18)) |
| |
| |
| #endif |
| |
3.2 点亮绿灯
| #include "stm32f10x.h" |
| |
| void SystemInit(void){ |
| |
| } |
| |
| int main(void){ |
| |
| |
| RCC_APB2ENR |= ( (1) << 3 ); |
| |
| |
| GPIOB_CRL &= ~( (0x0f) << (4*0) ); |
| |
| GPIOB_CRL |= ( (1) << (4*0) ); |
| |
| |
| GPIOB_ODR &= ~(1<<0); |
| while(1); |
| } |
| |
3.3 点亮蓝灯
| #include "stm32f10x.h" |
| |
| void SystemInit(void){ |
| |
| } |
| |
| int main(void){ |
| |
| |
| RCC_APB2ENR |= ( (1) << 3 ); |
| |
| |
| GPIOB_CRL &= ~( (0x0f) << (4*1) ); |
| |
| GPIOB_CRL |= ( (1) << (4*1) ); |
| |
| |
| GPIOB_ODR &= ~(1<<0); |
| while(1); |
| } |
| |
3.4 点亮红灯
| #include "stm32f10x.h" |
| |
| void SystemInit(void){ |
| |
| } |
| |
| int main(void){ |
| |
| |
| RCC_APB2ENR |= ( (1) << 3 ); |
| |
| |
| GPIOB_CRL &= ~( (0x0f) << (4*1) ); |
| |
| GPIOB_CRL |= ( (1) << (4*1) ); |
| |
| |
| GPIOB_ODR &= ~(1<<0); |
| while(1); |
| } |
| |
3.5 LED灯闪烁,绿灯闪烁 。
| #include "stm32f10x.h" |
| |
| typedef unsigned int uns32_t; |
| |
| void SystemInit(void){ |
| |
| } |
| |
| void delay(uns32_t count) |
| { |
| for( ; count !=0; count-- ); |
| } |
| |
| |
| int main(void){ |
| |
| |
| RCC_APB2ENR |= ( (1) << 3 ); |
| |
| |
| GPIOB_CRL &= ~( (0x0f) << (4*0) ); |
| GPIOB_CRL |= ( (1) << (4*0) ); |
| |
| |
| GPIOB_ODR &= ~(1<<0); |
| while(1){ |
| GPIOB_ODR &= ~(1<<0); |
| delay(0xFFFFF); |
| GPIOB_ODR |= (1<<0); |
| delay(0xFFFFF); |
| } |
| |
| } |
| |
3.6 红绿蓝三色LED灯切换闪烁
| #include "stm32f10x.h" |
| |
| |
| #define GREEN_LED (0) |
| |
| #define BLUE_LED (1) |
| |
| #define RED_LED (5) |
| |
| typedef unsigned int uns32_t; |
| |
| void open_port(int n){ |
| |
| |
| GPIOB_CRL |= ( 3 << (4*n) ); |
| |
| GPIOB_CRL &= ~( 3 << (4*n+2) ); |
| } |
| |
| void close_port(int n){ |
| |
| |
| GPIOB_CRL &= ~( 3 << (4*n) ); |
| |
| GPIOB_CRL |= ( 1 << (4*n+2) ); |
| } |
| |
| void SystemInit(void){ |
| |
| } |
| |
| void delay(uns32_t count) |
| { |
| for( ; count !=0; count-- ); |
| } |
| |
| void blue(){ |
| |
| close_port(GREEN_LED); |
| |
| |
| open_port(BLUE_LED); |
| } |
| |
| void green(){ |
| |
| close_port(RED_LED); |
| |
| |
| open_port(GREEN_LED); |
| } |
| |
| void red(){ |
| |
| |
| close_port(BLUE_LED); |
| |
| |
| open_port(RED_LED); |
| } |
| |
| int main(void){ |
| |
| |
| RCC_APB2ENR |= ( (1) << 3 ); |
| |
| |
| |
| GPIOB_CRL |= ( 3 << (4*5) ); |
| |
| GPIOB_CRL &= ~( 3 << (4*5+2) ); |
| |
| while(1){ |
| delay(0xfffff); |
| green(); |
| delay(0xfffff); |
| blue(); |
| delay(0xfffff); |
| red(); |
| } |
| |
| } |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异