预备(windows下)
- 可以参考网上教程搭建一个MDK工程,并且使用flymcu进行hex文件的下载(串口方式)
- 知道头文件的作用,会自己写头文件
- 有一块stm32的开发板(这里以mini板作为例子)
- 了解什么是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)))