完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
ST.STM32 Cortex®-M4 MCUs and MPUs programming manual
ST.RM0090 Reference manual 刘火良.STM32库开发实战指南——基于STM32F4.机械工业出版社 正点原子.STM32F429开发指南-HAL库版本_V1.1 Joesph Yiu.ARM cortex-M3与cortex-M4权威指南(第三版).清华大学出版社 中断 本文不会特意区分中断和异常的概念。Conrtex-M处理器都提供嵌套向量中断控制器 (NVIC),顾名思义,在F429中,中断是支持嵌套的。关于中断相关的内容,可以学习的内容有很多,具体内容可以参考 使用 在F429中,中断的配置比较简单。主要分成以下几个步骤: 一、 配置中断优先级组 /** * @brief Sets the priority grouping field (preemption priority and subpriority) * using the required unlock sequence. * @param PriorityGroup: The priority grouping bits length. * This parameter can be one of the following values: * @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority * 4 bits for subpriority * @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority * 3 bits for subpriority * @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority * 2 bits for subpriority * @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority * 1 bits for subpriority * @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority * 0 bits for subpriority * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. * The pending IRQ priority will be managed only by the subpriority. * @retval None */ void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ NVIC_SetPriorityGrouping(PriorityGroup); } 此函数在文件 二、配置中断优先级 /** * @brief Sets the priority of an interrupt. * @param IRQn: External interrupt number. * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f4xxxx.h)) * @param PreemptPriority: The preemption priority for the IRQn channel. * This parameter can be a value between 0 and 15 * A lower priority value indicates a higher priority * @param SubPriority: the subpriority level for the IRQ channel. * This parameter can be a value between 0 and 15 * A lower priority value indicates a higher priority. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { uint32_t prioritygroup = 0x00; /* Check the parameters */ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); prioritygroup = NVIC_GetPriorityGrouping(); NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); } 该函数在 三、使能中断 /** * @brief Enables a device specific interrupt in the NVIC interrupt controller. * @note To configure interrupts priority correctly, the NVIC_PriorityGroupConfig() * function should be called before. * @param IRQn External interrupt number. * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f4xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); } 该函数在 四、配置中断源。 该功能与具体产生中断的外设相关,需要具体分析。 优先级 在中断配置中,最重要的就是配置优先级。所谓优先级,就是当同时触发多个中断需要响应的时候,响应的顺序是按照优先级来排列的。在F429中,支持中断嵌套,即更高优先级的中断(优先级编号更小)可以抢断低优先级(优先级编号更高)的中断。 在F429中,优先级通过4位寄存器来表现,如下图所示: [tr]bit[td]7[tr]用途[td]用于表达优先级
[tr]优先级参数主优先级位数(bit)子优先级位数(bit)[/tr]
外部中断 如上图所示,若想产生中断:
外部中断的映射为: |
||||||
|
||||||
只有小组成员才能发言,加入小组>>
3232 浏览 9 评论
2914 浏览 16 评论
3421 浏览 1 评论
8899 浏览 16 评论
4015 浏览 18 评论
9647浏览 3评论
1040浏览 3评论
542浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
539浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2269浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-20 07:57 , Processed in 0.925580 second(s), Total 48, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号