正点原子stm32第16-17,24讲知识总结

蜂鸣器实验

1.蜂鸣器硬件连接

        蜂鸣器的驱动与LED灯的驱动存在不同,LED灯可以直接用IO口进行驱动但蜂鸣器因驱动电流过大,不适宜用电流直接驱动,因此使用三极管的电流放大效应,实现用小电流驱动蜂鸣器。

 驱动信号作用在芯片的PB8口上,其中的R33电阻作用在于过滤干扰电流确保蜂鸣器不会意外发声。

2.蜂鸣器实验代码参考

beep头文件

beep源文件

调用stm32f10x.h是为了调用RCC时钟函数,同时不同的IO口调用的时钟使能函数不同

主函数

led.h头文件与之前的相同,delay与sys的头文件直接引用即可

按键输入实验

1.硬件连接

2.实验代码展示

头文件:

源文件:

其中的key_scan用于检验三个按钮是否按下,再根据模式判断连续按下是否有用,0则是连续按下无效,需要松开下次按才会响应。1则是连续按,连续返回键值

KEY1与KEY0按下时端口信号为0;WK_UP按下时端口信号为一。

 主函数

 

NVIC优先级管理

STM32有84个中断,16个内核中断,68个可屏蔽中断,16个可编程的中断优先级。

NVIC中断优先级分组:

 

 中断分为0~4组,同时对每个中断设置一个抢占优先级与响应优先级

AIRCR[108]

IP bit[74]分配情况

分配结果

0

111

04

0位抢占优先级,4位响应优先级

1

110

13

1位抢占优先级,3位响应优先级

2

101

22

2位抢占优先级,2位响应优先级

3

100

31

3位抢占优先级,1位响应优先级

4

011

40

4位抢占优先级,0位响应优先级

 抢占优先级与响应优先级区别:

1.高抢占优先级可以打断低抢占优先级(优先级越小越高)

2.相同抢占优先级,高响应优先级不可以打断低响应优先级,但二者同时发生时,高响应先执行

3.当两个抢占优先级与响应优先级均相同时,哪个先发生哪个先执行

NVIC中断优先级设置:

中断优先级分组函数:

中断设置相关寄存器

相关函数在core_cm3.h中

 如何为每个中断设置优先级呢?

使用NVIC_Init函数即可

 中断优先级的设置步骤:

1.设置中断优先级分组(在整个系统中只执行一次)

2.设置每个中断的抢占和响应优先级

3.是否需要挂起或解挂

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值