ygyfy 发表于 2024-7-9 04:51:47

第15集 外部中断

之前学习的定时器中断,每隔一定时间周期性地产生中断。


中断系统是为使 CPU具有对外界紧急事件的实时处理能力而设置的。



当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求 CPU 暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示 CPU中断的请求源称为中断源。
优点1:CPU 总是先响应优先级别最高的中断请求。
优点2:可以按照优先级顺序来处理,处理完高优先级,再回去处理低优先级中断。
优点3:每一个中断源可以用软件独立地控制为开中断或关中断状态。
优点4:部分中断的优先级别均可由软件设置。


外部中断就是在单片机的一个引脚上,由于外部因素导致了一个高低电平的变化,通过捕获这个变化,单片机内部自主运行的程序就会暂时中断,转而去执行相应的中断处理程序,执行完后有回到原来中断的地方继续执行原来的程序。


引脚功能为INT开头的引脚为外部中断引脚,外部中断只能在这些引脚上才可以使用。
STM32G12K128的外部中断引脚




定时器 0/1 控制寄存器(TCON)

IT0:外部中断源0触发控制位。IT0=0,上升沿或下降沿均可触发外部中断0。IT0=1,外部中断0程控为下降沿触发方式。
IE0:外部中断0请求源(INT0/P3.2)标志。IE0=1外部中断0向CPU请求中断,当CPU响应外部中断时,由硬件清“0”IE0(边沿触发方式)
最好在exit.c中写入IE0 = 0手动清零一次,以防止上电后自动进中断误进中断一次。
EX0:外部中断0中断允许位


外部中断应用

用于紧急事件处理,如本例说,密码锁从室内按一次开关打开门;电梯的应急急停开关;机械设备的应急停止开关等。


芯征程 发表于 2024-7-9 14:39:17

感谢楼主的支持!给您【免费+包邮】送 实验箱!!!期待您更多的分享!!!

ygyfy 发表于 2024-7-10 19:14:32

试验箱已收到,感谢STC的支持!{:4_196:}先回去复习之前的章节把没做的实验做好,吃透些,然后继续进行后面的学习

ygyfy 发表于 2024-7-10 19:16:24

STC芯征程 发表于 2024-7-9 14:39
感谢楼主的支持!给您【免费+包邮】送 实验箱!!!期待您更多的分享!!!
...

感谢版主和STC的支持,也在此感谢华北的石经理,我会继续学习

ygyfy 发表于 2024-7-13 14:38:01

第16集 io中断

本帖最后由 ygyfy 于 2024-7-25 03:21 编辑

stc32g系列支持所有io口中断,有四种中断模式:上升沿,下降沿,低电平,高电平。每组io口都有独立的中断入口地址,且每个io口可独立设置中断模式。说明书中说,stc12k128版芯片的普通io口下降沿和上升沿中断暂时不要使用,不知道现在可以了不。

端口中断标志寄存器 PxINTF:0,没有中断请求;1,有中断请求。

端口中断模式配置PxIM0,PxIM1

P3IM0=0X00;
P3IM1=0XFF; //设置p3口为低电平中断

0-31号中断中,13号是保留中断号,我们可借用此中断号。
中断号拓展工具在官网——软件工具——工具软件——keil中断拓展插件中下载,安装插件后可以直接调用超过31的中断号,如p3口的中断号40.

作者建议把中断程序复制到主函数里面去执行。

中断源高优先级可以打断低优先级,同一优先级中断源靠前的先执行然后再执行靠后的,一个中断源在执行的时候不能被打断。本例定时器0和p3中断优先级初始值均为00(最低级优先级)。

外部中断和io口中断的区别:外部中断只有单次触发,要么就是按下要么就是松开也就是上升下降沿或者单独的下降沿才能执行;io中断高电平或者低电平中断,可持续执行。

先写这些吧,回去慢慢学习下之前学习的内容,因为有不少,因为各种各样的原因,比如,因为冲哥只是简单提了一句,但是我没详细理解,如取反,移位,组合起来运用就不熟悉了,又如本集,主程序中,有一句LOCK_State ^=(1<<(KEY_NUM-1));                        //获取当前是第几个按钮按下,{1-8}-》这句就没理解好,^=应该怎么理解?

ygyfy 发表于 2024-7-25 03:18:33

第17集 模数转换器ADC


模数转换器是将模拟信号(如采集到的电压)转换成数字信号(0和1组成的二进制数)的电子元件。

32G12K128的外部基准电路连接在20脚。




使用ADC功能时有Vref引脚的单片机Vref引脚不能悬空,必须接外部参考电压或者将其接到单片机的电源VCC。

12位ADC转换结果=4096*(ADC通道被转换的输入电压Vin/ADC外部参考源的电压Vref)

反推其被测电压Vin=12位ADC转换结果/4096*基准电压Vref

ADC口应设置为高阻输入,可通过STCAI-ISP软件进行设置P1.0口




关于预编译这部分不太理解,想简单写1或者0,视频之后有解释,留个记号




简单交个作业




{
                        Show_Tab = adc_val/1000%10;
                        Show_Tab = adc_val/100%10;       
                        Show_Tab = adc_val/10%10;               
                  Show_Tab = adc_val%10;       
                        Show_Tab = ADC_CAL_Voltage(adc_val)/1000%10;
                        Show_Tab = ADC_CAL_Voltage(adc_val)/100%10;       
                        Show_Tab = ADC_CAL_Voltage(adc_val)/10%10;               
                  Show_Tab = ADC_CAL_Voltage(adc_val)%10;
                        if(ADC_CAL_Voltage(adc_val)>=2200)
                        BEEP=0;
                        else
                        BEEP=1;
                }
再次感谢STC赠送的试验箱!也感谢冲哥的视频!

阿杰爱学单片机 发表于 2024-8-27 14:57:58

哇塞,看到你拿到试验箱了,突然就有动力了,横不得一天肝完所有视频

阿杰爱学单片机 发表于 2024-8-27 22:28:28

ygyfy 发表于 2024-6-6 19:00
补焊了两个TJA1050及其周边几个小元件做can通讯实验

can贵不贵

ygyfy 发表于 2024-8-28 15:52:27

阿杰爱学单片机 发表于 2024-8-27 22:28
can贵不贵

我买了好几家的,最贵的2.5一片,TJA1050,高速CAN用。低速的1020没买

llyymm 发表于 2024-8-30 08:14:30

签到曾积分{:4_256:}
页: 1 2 3 4 [5] 6
查看完整版本: 冲哥视频 《STC32位8051单片机原理及应用》学习打卡【已送实验箱】