快捷搜索:  

处理器挂起连中断都不响应?这是错误的

广告

前几天谈到GD3210x系统的处理器读取256KByte以上的flash时,会出现CPU挂起连中断都不响应的问题。当主频为16MHz时,挂时的时间长达131us,影响了采用外部中断,周期为104us通信数据的接收,有人说STM32等处理器一样存在这样的问题,这是错误的,STM32处理器只有在擦flash的时候才会导致CPU挂起20ms-40ms,在读取flash时不会挂起CPU。

这两天准备用DMA来抢救一把。通过测试发现,DMA可以不用CPU挂起的影响,即使一直读取256kByte以上的flash,也能捕捉到正确的值。但是发现两个问题:1)CCPDMA,在定时器时溢出时出错,貌似错过了一些边沿。最后,通过以下设置,在边沿捕捉触发时,将定时器的计数值清零。

1、我要用嵌入式知识配置4个按键的中断,下面是stm32外部中断的初始化函数的...

给你发个相关的配置外部中断的寄存器版函数,你可以参考下://外部中断配置函数//只针对GPIOA~I;不包括PVD,RTC,USB_OTG,USB_HS,以太网唤醒等//参数://GPIOx:0~8,代表GPIOA~I//BITx:需要使能的位;//TRIM:触发模式,下升沿;2,上降沿;3,任意电平触发//该函数一次只能配置1个IO口,

需多次调用//该函数会自动开启对应中断,以及屏蔽线voidEx_NVIC_Config(u8GPIOx,u8BITx,u8TRIM){u8EXTOFFSET(BITx%4)*4;RCC>APB2ENR|1<<14;//使能SYSCFG时钟SYSCFG>EXTICR[BITx/4]&~(0x000F<2、STM32共用中断线的外部中断引脚的判断

不对吧?根据AFIO>EXTICR1寄存器的定义来看,一次只能从PA1,PB1,PC1,PD1,PE1,PF1、PG1中选一个作为中断源。如果需要在两个不同的引脚上引入不同的两个外部中断,这两个中断的处理函数两个中断的处理函数不一定分别在两个子函数中写,请看清我的条件:中断线1,由PA1,PB1,PC1,PD1,PE1,PF1来共用,假设这些引脚都设置成了中断源且都为下降沿触发,其中任一个产生中断都会进入到中断线1的中断服务程序,那么在中断服务程序中如何来判断是哪个引脚的中断源产生了中断呢。

您可能还会对下面的文章感兴趣: