完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我的 UART 示例运行良好。但是,我想处理 UART 中断。目前它不起作用,因为它总是跳转到启动汇编代码中的无限循环。
无限循环:// startup_STM32f411retx.s b 无限循环 这是我的源代码。它在没有启用 USART 接收中断的情况下工作得很好。USART2_IRQHandler 永远不会执行。我在里面放了一个断点。相反,它总是跳转到 Infinit_loop 行。我做错了什么?为什么您的 HAL / LL 示例有效?我查看了 HAL/LL 代码。它与我的源代码非常相似。 感谢您提供任何帮助。 迈克尔 //#include "my_stm32f4_uart_driver.h" // 无 NVIC_SetPriority、NVIC_EnableIRQ #include #include "string.h" #include "stm32f4xx.h" // 我需要将这个库用于 NVIC_SetPriority、NVIC_EnableIRQ 诠释主要(无效){ RCC->AHB1ENR |= 1; //启用GPIOA时钟 RCC->APB1ENR |= 0x20000;//启用USART2时钟 GPIOA->MODER |= 0x0020 | 0x0080; GPIOA->AFR[0] |= 0x0700 | 0x7000; USART2->CR1 |= 0x0008 | 0x0004;//启用Tx/Rx,8位数据 USART2->BRR = 0x0683;//9600 波特 @ 16 Mhz USART2->CR2 = 0x0000;//1个停止位 USART2->CR3 = 0x0000;//无流量控制 USART2->CR1 |= 0x0020;// RXEIE(接收中断)? // USART2->CR1 |= 0x0080; // TXEIE(发送中断) USART2->CR1 |= 0x2000; //在 NVIC 端为 USART2 启用中断 NVIC_SetPriority(USART2_IRQn,0); NVIC_EnableIRQ(USART2_IRQn); 而(1){ // USART2_write(toupper(UART2_Read())); // 这行得通!!! } } char UART2_Read(void){ while(!(USART2->SR & 0x0020)){}//等待字符到达(阻塞代码) 返回 USART2->DR; } void USART2_write(int ch){ while(!(USART2->SR & 0x0080)){} //等待传输缓冲区为空 USART2->DR = (ch&0xFF); } 炭化温度;// 全局字符变量。 // 这是行不通的。它会导致错误异常句柄跳转到无限循环。 void USART2_IRQHandler(void) { if (USART2->SR & 0x0020) //等待字符到达(阻塞代码) temp = USART2->DR; } |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2629 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1782 浏览 1 评论
3607 浏览 6 评论
5987 浏览 21 评论
938浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 19:18 , Processed in 1.152180 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号