小松的STM32教程(1)—— 输入

这篇教程介绍了STM32的基础输入输出操作,包括时钟配置、延时函数实现以及GPIO点亮LED。内容涵盖delay.c和delay.h的延时函数、led.c和led.h的GPIO输出,适合STM32初学者入门。
摘要由CSDN通过智能技术生成

预备(windows下)

  1. 可以参考网上教程搭建一个MDK工程,并且使用flymcu进行hex文件的下载(串口方式)
  2. 知道头文件的作用,会自己写头文件
  3. 有一块stm32的开发板(这里以mini板作为例子)
  4. 了解什么是GPIO及其作用

概述

本文将提到最基本的输入输出操作,包括以下内容

  • 时钟
  • 延时函数
  • 点亮led
  • 【位带操作】

时钟

延时函数

我把正点原子的延时函数删去了OS部分,大家可以直接移植使用

delay.c

#include "delay.h"

static u8  fac_us=0;
static u16 fac_ms=0;
	
void delay_init()
{
   
	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
	fac_us=SystemCoreClock/8000000;
	fac_ms=(u16)fac_us*1000;
}								    


void delay_us(u32 nus)
{
   		
	u32 temp;	    	 
	SysTick->LOAD=nus*fac_us;
	SysTick->VAL=0x00;
	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
	do
	{
   
		temp=SysTick->CTRL;
	}while((temp&0x01)&&!(temp&(1<<16)));
	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
	SysTick->VAL =0X00;
}


void delay_ms(u16 nms)
{
   	 		  	  
	u32 temp;		   
	SysTick->LOAD=(u32)nms*fac_ms;
	SysTick->VAL =0x00;
	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
	do
	{
   
		temp=SysTick->CTRL;
	}while((temp&0x01)&&!(temp&(1<<16))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值