目录
实验目标:
学习和理解STM32F103系列芯片的地址映射和寄存器映射原理;了解GPIO端口的初始化设置三步骤(时钟配置、输入输出模式设置、最大速率设置)
以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB、GPIOC、GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒。
(1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;
(2)分别用汇编语言,C语言编程实现。
实验准备工作;
stm32最小开发板,led灯,面包板,CH340转接线,KEIL5
实验所需软件:
烧录软件:mcuisp,以及USB转串口驱动_CH340。
我实验所使用的是野火开发板:模型图如下:
实验代码
#include "stm32f10x.h"
#include "bsp_led.h"
#define SOFT_DELAY Delay(0x0FFFFF);
void Delay(__IO u32 nCount);
/**
* @brief Ö÷º¯Êý
* @param ÎÞ
* @retval ÎÞ
*/
int main(void)
{
/* LED ¶Ë¿Ú³õʼ»¯ */
LED_GPIO_Config();
while (1)
{
LED1_ON; // ÁÁ
SOFT_DELAY;
LED1_OFF; // Ãð
LED2_ON; // ÁÁ
SOFT_DELAY;
LED2_OFF; // Ãð
LED3_ON; // ÁÁ
SOFT_DELAY;
LED3_OFF; // Ãð
}
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
采用汇编语言如下,仅供参考。
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD MemManage_Handler ; MPU Fault Handler
DCD BusFault_Handler ; Bus Fault Handler
DCD UsageFault_Handler ; Usage Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0