基于STM32F103写
时间: 2024-05-24 14:10:29 浏览: 28
一个简单的LED闪烁程序
首先,需要了解一下STM32F103的基本配置和寄存器,以及GPIO的使用方法。
在代码中,需要定义一些宏定义,如下:
#define RCC_APB2Periph_GPIOC ((uint32_t)0x00000010)
#define GPIO_Pin_13 ((uint16_t)0x2000)
#define GPIO_Mode_Out_PP ((uint8_t)0x02)
这些宏定义用于配置GPIO端口,如下所示:
//使能GPIOC端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//配置GPIOC.13为推挽输出
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
然后,在主函数中,可以通过以下代码实现LED闪烁:
while (1)
{
//点亮LED
GPIO_SetBits(GPIOC, GPIO_Pin_13);
//延时一段时间
Delay(1000000);
//熄灭LED
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
//延时一段时间
Delay(1000000);
}
其中,Delay()函数用于实现延时,代码如下:
void Delay(__IO uint32_t nCount)
{
while(nCount--)
{
}
}
这个函数会根据nCount的值进行循环,从而实现延时。可以根据需要修改nCount的值来调整延时时间。
完整的LED闪烁程序如下:
#include "stm32f10x.h"
#define RCC_APB2Periph_GPIOC ((uint32_t)0x00000010)
#define GPIO_Pin_13 ((uint16_t)0x2000)
#define GPIO_Mode_Out_PP ((uint8_t)0x02)
void Delay(__IO uint32_t nCount);
int main(void)
{
//使能GPIOC端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//配置GPIOC.13为推挽输出
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1)
{
//点亮LED
GPIO_SetBits(GPIOC, GPIO_Pin_13);
//延时一段时间
Delay(1000000);
//熄灭LED
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
//延时一段时间
Delay(1000000);
}
}
void Delay(__IO uint32_t nCount)
{
while(nCount--)
{
}
}
阅读全文