stm32f103c8t6点亮led灯PC13程序代码
时间: 2023-07-26 17:03:40 浏览: 249
好的,以下是使用STM32F103C8T6点亮PC13 LED灯的示例代码:
```c
#include "stm32f10x.h"
void delay(uint32_t time) {
while (time--);
}
int main(void) {
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // 使能GPIOC时钟
GPIOC->CRH &= ~GPIO_CRH_CNF13; // PC13设置为推挽输出
GPIOC->CRH |= GPIO_CRH_MODE13; // PC13设置为最大速率输出
while (1) {
GPIOC->BSRR = GPIO_BSRR_BS13; // PC13置高,LED亮
delay(1000000);
GPIOC->BSRR = GPIO_BSRR_BR13; // PC13置低,LED灭
delay(1000000);
}
}
```
在这个代码中,我们首先使能了GPIOC时钟,然后将PC13设置为推挽输出,并设置为最大速率输出。在无限循环中,我们通过设置GPIOC的BSRR寄存器来点亮和熄灭LED灯,然后通过delay函数来控制LED灯的闪烁频率。
希望这个代码能够帮助到你!
相关问题
stm32f103c8t6点亮led灯PC13实验代码
以下是使用STM32F103C8T6点亮PC13 LED灯的基本示例代码:
```
#include "stm32f10x.h"
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++);
}
int main(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; //使能GPIOC时钟
GPIOC->CRH &= 0xFF0FFFFF; //PC13设置为通用推挽输出
GPIOC->CRH |= 0x00300000;
while(1)
{
GPIOC->BSRR = 0x00002000; //PC13置1
delay(500000);
GPIOC->BRR = 0x00002000; //PC13置0
delay(500000);
}
}
```
这个代码使用了内置的延时函数,每次循环执行时会点亮LED灯500毫秒,然后熄灭500毫秒。在这个示例代码中,我们使用了GPIOC的13号引脚(PC13)作为LED灯的控制引脚。你可以根据需要更改引脚号码和延时时间。
stm32f103c8t6点亮led灯PC13
好的,以下是使用STM32F103C8T6点亮LED灯PC13的步骤:
1. 首先,需要在你的代码中引入STM32F1xx_HAL库,包括头文件和库文件。
2. 接下来,需要初始化GPIO口,将PC13配置为输出模式。可以使用HAL库提供的函数来完成初始化。
3. 然后,在主循环中,使用HAL库提供的函数设置PC13输出高电平或低电平,从而控制LED灯的亮灭。
下面是示例代码:
```
#include "stm32f1xx_hal.h"
int main(void)
{
// 初始化HAL库
HAL_Init();
// 初始化时钟
SystemClock_Config();
// 初始化GPIO口
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOC_CLK_ENABLE(); // 使能GPIOC时钟
GPIO_InitStruct.Pin = GPIO_PIN_13; // 选择PC13
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 配置为推挽输出模式
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 设置GPIO口速度
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); // 初始化PC13
// 主循环
while (1)
{
// 点亮LED灯
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(1000); // 延时1秒
// 熄灭LED灯
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(1000); // 延时1秒
}
}
```
需要注意的是,PC13引脚上的LED灯是低电平有效的,也就是说,当PC13输出低电平时,LED灯亮;当PC13输出高电平时,LED灯灭。因此,在控制PC13输出时需要注意。
阅读全文