STM32 USART中断小程序

原创 2011年01月19日 17:02:00

尽管网上的例程一堆堆,但还是花了好几天时间才跑通了一个USART通过中断方式实现的小程序。相当无比地郁闷啊。记录一下遇到的问题:

 

1. 配置RCC的时机

在主程序中通过查询方式收发数据时,结果并不稳定。对比了ST提供的例程中的设置,将RCC配置提到了所有配置的最前面后,功能实现。结论:应先配置RCC,再初始化其他外设。

 

2. RAM下调试遇到的问题

在上述查询方式的基础上,增加对NVIC的配置,USART的中断设置,以及ISR中的处理过程,放到RAM下调试,无法进入ISR。有以下两个测试结果:1)在主程序while中调用USART_GetITStatus,判断USART中断事件是否发生及中断是否使能,结果为SET。2)在调试时看NVIC的寄存器,USART1已经enable了,说明寄存器已经写入。上述两点结果下,程序从理论上应该进入中断。百思不得其解之下,鬼使神差地把程序放到flash下,一切问题烟消云散,程序跑通,在ISR中处理了收发事件。

flash和ram下程序的不同动作,原因未知,做了如下一些对比(心疼我的flash啊):

T表示只设置了USART发送中断,R表示只设置了USART接收中断。可以看出,不是在FLASH的程序中是否设置过NVIC的问题。导致错误的原因可能是flash下和ram下程序的固件库版本不同。当程序加载到flash或ram中后,系统是如何运行程序的?两者之间是否有干扰和影响?这点需要进一步学习。

 

3. 其他问题

在做2中的试验时,希望在flash内无程序时,在RAM中调试看结构。但用J-Flash ARM V4.08l擦除flash后,keil中无法调试,显示core is locked up, cpu halted。网上搜到说在J-Flash ARM V4.08l中target->unsecure chip->重新上电,就可以解锁。如法炮制,失败。因此在2中的试验中只能在flash中烧入空程序。解决方法需要继续摸索。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

STM32 串行通信 USART 程序例举

STM32 串行通信 USART 的笔记讲解连接http://blog.csdn.net/dragon12345666/article/details/24484185 1、串行通信 软件仿真ST...

usart1-stm32串口程序

STM32F10X USART 中断接受+发送,测试无误

硬件平台:STM32F10X  USART模块 + JLink+USB转TTL小板 软件平台:Keil 4  前一个程序只是作为下位机的MCU将数据发送给串口助手,也就是上位机,相当于单工通信,对...

STM32 ADC_DMA _USART 程序

  • 2013-10-23 14:40
  • 100KB
  • 下载

STM32的USART1程序

  • 2012-05-08 11:08
  • 2.50MB
  • 下载

STM32入门学习之USART中断(STM32F030F4P6基于CooCox IDE)

#include "stm32f0xx.h" #include "stm32_lib/inc/stm32f0xx_rcc.h" #include "stm32_lib/inc/stm32f0xx_gp...

stm32F107 usart程序

  • 2015-04-21 11:36
  • 324KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)