物联网智能家居实战-基础班第4节(中断与串口)

前言:以下内容基于 百问网 黄老师的 7天实战训练的个人总结

第4节主要学习了基于STM32F103C8T6的中断系统,以及串口编程:

1、什么是中断:相当于在你正在做一件事情A时,突然有紧急事件B闯入,让你不得不放下手里的事情A马上先把紧急事件B处理好,然后再返回处理之前正在做的事情A。紧急事件B就相关于中断。下图比较清晰的描述了中断的过程。

2、STM32有哪些中断:

系统异常(内部中断):系统异常相关与内部中断,主要是一些系统异常的反馈。

外部中断:相关于外设在要执行一些重要的动作时和系统发出的优先处理申请。

打开工程文件,里面有中断向量表,可以看到I2C,UART,FLASH,TIMER等。

中断的优先级:中断的优先顺序由NVIC中断控制器进行管理,上面的图示中有表示优先级,-3最高,且-3-2-1的优先级是固定的不可修改,其余的可以通过NVIC进行修改。

所有的中断都要指定:

抢占优先级:数量越小优先级越高(0最高),如果抢占优先级相同,必须要先执行完前面的中断,然后再执行后面的。

子优先级:数量越小优先级越高(0最高),如果抢占优先级相同,子优先级高的先执行。

注:抢占优先级和子优先级完全相同的,按中断向量表中顺优先执行。

GPIO中断,如下图所示不同组同位GPIO共用同一个中断,比如PA0/PB0/~PG0共用EXTI0.可以配置PX0的任意接口但只能一个。 

中断初始化:

static void MX_NVIC_Init(void)    //向量表初始化
{
    HAL_NVIC_SetPriority(EXTI0_IRQn,1,0);//设置抢占优先级1,子优先级0
    HAL_NVIC_EnableIRQ(EXTI0_IRQn)       //中断EXTI0使能
}

在中断函数中增加功能:KEY触发

EXTI0_IRQHandler(viod)
{

    HAL_GPIO_EXTI_IRQHandler(KEY_pin)//按下KEY键触发中断


}

KEY 中断函数

static uint8_t key_flag =0 ;//KEY 标识位

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{

    if(GPIO_Pin == KEY_Pin)     //如果按下KEY中断
    {
        key_flag = ~key_flag;   //标识位取反
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,key_flag?GPIO_PIN_RESET:GPIO_PIN_SET);
//判断flag,如果是1就RESET,如果是0就SET
    }

}



通信包括串行通信和并行通信:

串行:比如发送一个8位的数据,如果是1条数据线,每次发1位8次发完。

并行:比如发送一个8位数据,如果是8条线,1次发完。

全双工/半双工/单工传输

全双工:双方可以同时收发信息。

半双工:只能一边发完,另一边再发。

单工 :只能单向的收发。

同步/异步通信:

同步通信:收发端频率相同,共用时钟线,如I2C协议。

异步通信:收发端频率不同,是靠指定的传输协议方式收发信息,如串口,红外收发。

串口电平:因ARM本身只能支持3.3~5V的电压,串口TTL是近距离模块传输的方式,传输距离非常近。如果要提升传输距离,需要把0~5V的电压差提升来提高传输可靠性,如下图所示:

接下来的内容就是利用STM32CubeMX以及KEIL进行代码编写了,相关内容比较多,有兴趣的同学可以自行学习下。 

 

本篇总结完成,内容学习及部分配图源于百问网相关教程

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值