完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32 各种 进不了中断,受不了了
先初始化,自己写的一些函数,跟原子写的功能一样 #include #include cdz_rcc_init(9); cdz_usart_init(72,9600); cdz_dma_config(4,(u16)sizeof(string),(u32)&(USART1->DR),(u32)string); cdz_nvic_config(3,3,14,2); //14 是DMA1通道4 的中断号 cdz_led_init(); 在一系列的初始化以后,程序运行的主体如下 这个是用DMA1 的通道4 发串口数据的程序 while(1) { if(DMA->ISR&(0x00002000)) { DMA->IFCR|=1<<13; DMA->CHANNEL[3].CCR&=0xfffffffe; // 我把DMA的数据结构重新定义了一下,这里的DMA->CHANNEL[3].CCR 就是dma1 通道4 的CCR,最低位清零 停止DMA cdz_delay_ms(1500); LED0=~LED0; DMA->CHANNEL[3].CCR|=0x01; } } 这里我把DMA的数据结构重新定义了一下,定义如下, typedef struct { vu32 ISR; vu32 IFCR; struct { vu32 CCR; vu32 CNDTR; vu32 CPAR; vu32 CMAR; vu32 RESERVED; }CHANNEL[7]; }mydma_type; 上述程序运行时可以得到想要的结果,就是灯 1.5秒闪一次并且向串口发了一串字符串,每1.5秒循环一次,那个循环里有个判断 if(DMA->ISR&(0x00002000)) 等于说DMA相关中断的标志位已被置位。 在函数 cdz_nvic_config(3,3,14,2); 里也已使能 通道14 也就是DMA通道4 的中断 照理说 把上面那个while循环里的代码移到 DMA1 通道4的中断服务函数中也会得到同样效果,为啥就不行呢?? void DMAChannel4_IRQHandler() { if(DMA->ISR&(0x00002000)) { DMA->IFCR|=1<<13; DMA->CHANNEL[3].CCR&=0xfffffffe; cdz_delay_ms(1500); LED0=~LED0; DMA->CHANNEL[3].CCR|=0x01; } } 除了开启相应通道的中断也就是 NVIC->ISER[] ,还有 相关的中断标志位被置位外,进入中断还需不需要其他条件??? |
|
相关推荐
1个回答
|
|
回复【楼主位】cdzlllfe:
------------------------------- 首先很佩服你的耐心. 其次,我觉得你的努力用错了地方. 自己重新定义寄存器的方法,十分不可取. 最好就是编译器自带的,其次是mcu厂家提供的. 自己写的,除非自己一个人用,否则通用性极差.没几个人会愿意去用你的.即便你重申了N次没问题.别人还是会担心. 当你的代码无法通过的时候,最好的办法就是参考一下我现有的代码.为什么我的可以,你的不可以.这样比较容易找到原因. |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1205 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1225 浏览 1 评论
630 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
474 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1151 浏览 2 评论
1682浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
341浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
339浏览 3评论
331浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
308浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-2 04:20 , Processed in 0.890776 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191