stm32f103c8t6最小系统板控制板载小灯闪烁

一、开发环境。

Windows10系统

Keil uVision5

二、开发板为stm32f103c8t6

三、main.c的代码。

#include "stm32f10x.h" // 包含STM32F10x系列微控制器的头文件。

// 以下是一个已经被注释掉的原始延时函数,使用简单的空操作循环实现。
// void Delay(__IO uint32_t nCount)
// {
//     for (; nCount!= 0; nCount--);
// }

// 微秒级延时函数
void Delay_us(uint32_t xus)
{
    SysTick->LOAD = 72 * xus;               // 根据系统时钟设置SysTick的自动重装值,这里假设系统时钟为72MHz。
    SysTick->VAL = 0x00;                   // 清空当前计数值,准备开始新的计时。
    SysTick->CTRL = 0x00000005;            // 设置SysTick的控制寄存器,选择HCLK作为时钟源,并使能定时器。
    while(!(SysTick->CTRL & 0x00010000));   // 等待SysTick计数到0,即等待指定的微秒数过去。
    SysTick->CTRL = 0x00000004;            // 关闭SysTick定时器,停止计数。
}

// 毫秒级延时函数,通过调用微秒级延时函数实现。
void Delay_ms(uint32_t xms)
{
    while(xms--)
    {
        Delay_us(1000);                     // 调用微秒级延时函数,实现1毫秒的延时。
    }
}

// 秒级延时函数,通过调用毫秒级延时函数实现。
void Delay_s(uint32_t xs)
{
    while(xs--)
    {
        Delay_ms(1000);                     // 调用毫秒级延时函数,实现1秒的延时。
    }
}

int main(void)
{
    // 使能GPIOC端口的时钟,以便使用该端口的引脚。
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

    // 配置GPIOC的第13个引脚(PC13)为推挽输出模式,用于控制LED。
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;    // 指定要初始化的引脚为PC13。
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置引脚模式为推挽输出。
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置引脚的速度为50MHz。
    GPIO_Init(GPIOC, &GPIO_InitStructure);           // 根据GPIO_InitStructure初始化GPIOC。

    while (1) // 创建一个无限循环。
    {
        // 点亮LED:将PC13置为高电平。
        GPIO_SetBits(GPIOC, GPIO_Pin_13);
        // 使用毫秒级延时函数实现100毫秒的延时。
        Delay_ms(300);

        // 熄灭LED:将PC13置为低电平。
        GPIO_ResetBits(GPIOC, GPIO_Pin_13);
        // 再次使用毫秒级延时函数实现100毫秒的延时。
        Delay_ms(300);
    }
}

四、效果展示。

stm32f103c8t6板载小灯闪烁

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值