STM32学习记录(2024,rabbitmq与kafka面试

这篇博客记录了STM32的学习过程,包括按键初始化和扫描、串口设置的步骤及外部中断的配置。作者通过代码示例详细解释了如何进行GPIO设置、串口初始化以及外部中断服务函数的编写,为读者提供了一个清晰的STM32入门教程。
摘要由CSDN通过智能技术生成

//初始化 PB8 为输出口.并使能这个口的时钟

//LED IO 初始化

void BEEP_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

//使能 GPIOB 端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //BEEP–>GPIOB.8 端口配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为 50MHz

GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化 GPIOB.8

GPIO_ResetBits(GPIOB,GPIO_Pin_8); //输出 0,关闭蜂鸣器输出

}

.h代码

#ifndef __BEEP_H

#define __BEEP_H

#include “sys.h”

//蜂鸣器端口定义

#define BEEP PBout(8) // BEEP,蜂鸣器接口

void BEEP_Init(void); //初始化

#endif

mian.c代码

#include “sys.h”

#include “delay.h”

#include “led.h”

#include “beep.h”

//ALIENTEK 精英 STM32 开发板实验 2

//蜂鸣器实验

int main(void)

{

delay_init(); //延时函数初始化

LED_Init(); //初始化与 LED 连接的硬件接口

BEEP_Init(); //初始化蜂鸣器端口

while(1)

{ LED0=0;

BEEP=0;

delay_ms(300);

LED0=1;

BEEP=1;

delay_ms(300);

}

}

按键实验

.c代码

#include “key.h”

#include “sys.h”

#include “delay.h”

//按键初始化函数

void KEY_Init(void) //IO 初始化

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|

RCC_APB2Periph_GPIOE,ENABLE); //使能 PORTA,PORTE 时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;//GPIOE.3~4

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入

GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化 GPIOE3,4

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //初始化 WK_UP–>GPIOA.0

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 设置成输入,下拉

GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIOA.0

}

//按键处理函数

//返回按键值

//mode:0,不支持连续按;1,支持连续按;

//0,没有任何按键按下

//1,KEY0 按下

//2,KEY1 按下

//3,KEY3 按下 WK_UP

//注意此函数有响应优先级,KEY0>KEY1>KEY_UP!!

u8 KEY_Scan(u8 mode)

{

static u8 key_up=1;//按键按松开标志

if(mode)key_up=1; //支持连按

if(key_up&&(KEY00||KEY10||WK_UP==1))

{

delay_ms(10);//去抖动

key_up=0;

if(KEY0==0)return KEY0_PRES;

else if(KEY1==0)return KEY1_PRES;

else if(WK_UP&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值