实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验
2023-12-26 21:39:06
目录
三、硬件部分
GPIO
【1】点灯实验
1.首先找到要点的灯,在板子上看到对应的白色丝印,比如绿灯D10.然后打开底板原理图找到LED灯
点亮绿灯只需要将网络标号LED4设置为低电平即可导通,绿灯亮。
CON1的5引脚
2.然后去核心板原理图去找对应的网络标号LED4,看到对应的引脚为PB0,即将PB0设置为低电平即可点亮
- 配置STM32CubeMX
1)打开STM32CubeMX
- 双击第二个Ux
然后:
然后:
然后:
然后:
打开keil
1)打开创建文件的路径下MDK-ARM里面的工程文件
2)打开main.c
- 编写代码,注意写在BEGIN和END之间
4)编译(F7)烧写(F8),烧写插入STLink,打开stm32电源
- 按复位键
效果:
任务:
????????实现流水灯:
????????黄灯亮一秒
????????蓝灯亮一秒
????????绿灯亮一秒
【2】按键控制灯实验
- 找到按键的位置PA8
- 配置STM32CubeMX,PA8,输入,PB0输出
- 生成KEIL工程
- 写代码
读PA8引脚状态,如果按下反转灯
HAL_Delay(100);//延时消抖
int??ret??=?HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8);
if(ret?==?1)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);//反转PB0
}
【3】uart串口实验
配置PA9,PA10分别为发送端和接收端
CubeMX
File->new?project?输入stm32f051k8,选择ux
打开生成后的工程文件中的main.c
打开串口调试工具:
核心代码:
uint8_t buttonState=0; //记录按键时灯的状态
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//HAL_Delay(1000);
//按下就亮,放开就灭
/*
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)){
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
}else{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
}
*/
//按下就亮,再按就灭
/*
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET) {
HAL_Delay(50); // 增加延时以避免抖动
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET) {
if(buttonState == 0) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
buttonState = 1;
} else {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
buttonState = 0;
}
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET); // 等待按键释放
}
}
*/
char buf[32]={0};
HAL_UART_Receive(&huart1,buf,sizeof(buf),100);
HAL_Delay(1000);
//串口1
HAL_UART_Transmit(&huart1,buf,sizeof(buf),1000);
HAL_Delay(2000);
}
/* USER CODE END 3 */
}
实验视频
实现流水灯
流水灯
uart串口实验
uart串口实验
文章来源:https://blog.csdn.net/m0_63064861/article/details/135230769
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!