本文练习硬件使用STM32F103C8芯片开发板,软件使用Keil5-5.23版本安装对应Keil4兼容包,使用Keil4标准库函数开发,练习目的为掌握STM32单片机操作方法,最终独立完成相关项目,为巩固学习并分享学习经验现分享如下:
文章目录
LED相关操作
1.1 相关函数定义
- 相关函数定义
- LED.h
#ifndef __LED_H #define __LED_H #include "sys.h" //#define LED1 PBout(0)// PB0 //#define LED2 PBout(1)// PB1 #define LEDPORT GPIOB //定义IO接口 #define LED1 GPIO_Pin_0 //定义IO接口 #define LED2 GPIO_Pin_1 //定义IO接口 void LED_Init(void);//初始化 #endif
- LED.C
#include "led.h" void LED_Init(void){ //LED灯的接口初始化 GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin = LED1|LED2; //选择端口号(0~15或all) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) GPIO_Init(LEDPORT, &GPIO_InitStructure); }
- delay.h
#ifndef __DELAY_H #define __DELAY_H #include "sys.h" void delay_s(u16 s); void delay_ms(u16 ms); void delay_us(u32 us); #endif
- delay.c
#include "delay.h" #define AHB_INPUT 72 //请按RCC中设置的AHB时钟频率填写到这里(单位MHz) void delay_us(u32 uS){ //uS微秒级延时程序(参考值即是延时数,72MHz时最大值233015) SysTick->LOAD=AHB_INPUT*uS; //重装计数初值(当主频是72MHz,72次为1微秒) SysTick->VAL=0x00; //清空定时器的计数器 SysTick->CTRL=0x00000005;//时钟源HCLK,打开定时器 while(!(SysTick->CTRL&0x00010000)); //等待计数到0 SysTick->CTRL=0x00000004;//关闭定时器 } void delay_ms(u16 ms){ //mS毫秒级延时程序(参考值即是延时数,最大值65535) while( ms-- != 0){
- LED.h