Monthly Archives: January 2021

STM32微控制器之GPIO按键控制LED灯开关状态的反转

Proteus仿真STM32F103R6微控制器GPIO的输入与输出,循环检测按键状态,控制LED灯开关状态的反转。GPIO输入:按键检测;GPIO输出:高低电平,点亮或关闭LED灯。

一、实验环境
微控制器:STM32F103R6;仿真软件:Proteus 8.11;开发工具:Keil MDK 5.33。

二、原理图
实验所用的8个LED灯,分别接在STM32微控制器的PB0,PB1,…,PB7,通过IO端口的高低电平控制;一个按键接在PC0,同时给按键并联一个小电容,实现硬件消抖。
Continue reading

STM32微控制器之跑马灯实验程序(标准固件库版)

STM32标准外设库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。

因此,使用固态函数库可以大大减少开发者开发使用片内外设的时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。同时,STM32官方还给出了大量的示例代码以供学习。
Continue reading

STM32微控制器之跑马灯实验程序(宏定义改进版)

寄存器版跑马灯实验程序,完全通过操作地址来实现的,不直观,而且容易出错。现在用存储器映像,添加宏定义,增强程序的可读性。

一、存储器映像头文件

#ifndef __STM32F10x_H
#define __STM32F10x_H

#define PERIPH_BASE			(0X40000000)
#define APB1PERIPH_BASE		PERIPH_BASE
#define APB2PERIPH_BASE		(PERIPH_BASE + 0X10000)
#define AHBPERIPH_BASE		(PERIPH_BASE + 0X20000)

#define RCC_BASE			(AHBPERIPH_BASE + 0X1000)
#define GPIOB_BASE			(APB2PERIPH_BASE + 0X0C00)

#define RCC_APB2ENR			*(unsigned int *)(RCC_BASE + 0X18)
#define GPIOB_CRL			*(unsigned int *)(GPIOB_BASE + 0X00)
#define GPIOB_CRH			*(unsigned int *)(GPIOB_BASE + 0X04)
#define GPIOB_ODR			*(unsigned int *)(GPIOB_BASE + 0X0C)
#endif 

Continue reading

STM32微控制器之跑马灯实验程序(寄存器基础版)

STM32微控制器入门最经典实验程序莫过于跑马灯。通过对STM32微控制器GPIO端口的高低电平控制,实现LED灯的打开与关闭,达到跑马灯的效果。

一、实验环境
微控制器:STM32F103R6;仿真软件:Proteus 8.11;开发工具:Keil MDK 5.33。

二、原理图
跑马灯实验所用的8个LED灯,分别接在STM32微控制器的PB0,PB1,…,PB7,通过IO端口的高低电平控制实现跑马灯效果。
Continue reading