基于stm32f411 keil编程环境串口输入学号姓名,选取最后两位作为led灯亮灭时间
时间: 2023-06-12 11:03:29 浏览: 127
好的,下面是基于STM32F411和Keil编程环境的串口输入学号姓名,选取最后两位作为LED灯亮灭时间的代码实现。
1. 首先,你需要连接一颗LED灯到开发板的某个GPIO引脚上,我假设你将LED连接到了PA5引脚上。
2. 然后,你需要在Keil中打开一个新的工程,并在工程中添加以下代码:
```c
#include "stm32f4xx.h"
void init_led(void)
{
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // 使能GPIOA时钟
GPIOA->MODER |= GPIO_MODER_MODE5_0; // 将PA5引脚配置为输出模式
}
void delay_ms(uint32_t ms)
{
uint32_t i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 10000; j++);
}
}
int main(void)
{
uint8_t name[20];
uint8_t student_id[20];
uint8_t i, j;
init_led();
while (1) {
printf("Please enter your name:\r\n");
scanf("%s", name);
printf("Please enter your student ID:\r\n");
scanf("%s", student_id);
i = name[strlen(name) - 2] - '0';
j = student_id[strlen(student_id) - 2] - '0';
GPIOA->BSRR = GPIO_BSRR_BS5; // 点亮LED
delay_ms(i * 1000);
GPIOA->BSRR = GPIO_BSRR_BR5; // 熄灭LED
delay_ms(j * 1000);
}
}
```
3. 在上面的代码中,我们首先定义了一个初始化LED的函数init_led()和一个延时函数delay_ms()。然后,在main()函数中,我们用scanf()函数从串口输入学号和姓名,并提取出最后两位作为LED灯的亮灭时间。最后,我们使用GPIOA->BSRR寄存器控制PA5引脚的电平来点亮或熄灭LED灯。
4. 编译并下载代码到开发板后,你可以通过串口助手输入你的姓名和学号,并观察LED灯的亮灭情况来验证程序是否正常工作。
希望这个代码对你有所帮助!
阅读全文