历史上的今天
返回首页

历史上的今天

今天是:2025年01月15日(星期三)

正在发生

2019年01月15日 | STM32中NVIC_Init导致的上电程序不运行

2019-01-15 来源:eefocus

最近使用在STM32上使用ucosii的运行多任务时候遇到一个奇怪问题,我用到了4个串口,随着程序增大,出现了上电后不运行的情况,我用一个LED闪烁指示运行,使用STLINK进行debug没有问题,但重新上电运行就不行,硬件复位了也不行,排除了硬件问题、指针跑飞、任务堆栈溢出、卡死在某死循环 等可能性后,怀疑是哪句初始化问题,就屏蔽了所有初始化语句(LED的IO口配置除外),最后定位在一个串口的NVIC初始化语句上。


void open_usart_wireless(u32 bound)

{

  GPIO_InitTypeDef GPIO_InitStructure;

  USART_InitTypeDef USART_InitStructure;

  NVIC_InitTypeDef NVIC_InitStructure;


  RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2,ENABLE); 

//USART2_TX   GPIOA.9

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.9

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

  GPIO_Init(GPIOA, &GPIO_InitStructure);//


  //USART2_RX   GPIOA.10

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA10

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//

  GPIO_Init(GPIOA, &GPIO_InitStructure);//


  //Usart2 NVIC ÅäÖÃ

  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 3 ;//

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //

  NVIC_Init(&NVIC_InitStructure); //1、屏蔽这一句程序就可以上电正常运行,这个进行了多次试验过,屏蔽就好,不屏蔽就不运行


  USART_InitStructure.USART_BaudRate = bound;//

  USART_InitStructure.USART_WordLength = USART_WordLength_8b;//

  USART_InitStructure.USART_StopBits = USART_StopBits_1;//

  USART_InitStructure.USART_Parity = USART_Parity_No;//

  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//

  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //

  

  USART_Init(USART2, &USART_InitStructure); //

  USART_ClearITPendingBit(USART2,USART_IT_RXNE);//2、在没有屏蔽1、的情况下添加这一句,程序也可以上电正常运行,反复上电都正常

  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//

  USART_Cmd(USART2, ENABLE);   


}


通过上网搜索“STM32不运行 NVIC_Init ”,看到有位朋友在论坛发帖求助,情况和我类似,最后他自己解决了,就是要清一下中断,然后我也在初始化中添加了清串口接收中断,果然就可以了。我记得在谁家的例程里我也看到过这样的操作,初始化里清一下串口接收中断,可能是芯片是一个bug。从道理上来说这个问题说不通,遇到这种情况的人也许不多,如果有遇到了类似情况的看到这个希望能有所启发。

推荐阅读

史海拾趣

DS-IMP公司的发展小趣事

在电子行业,供应链管理是企业发展的关键因素之一。DS-IMP公司深知这一点,因此在发展过程中不断优化供应链管理。公司建立了完善的供应链体系,与供应商和客户建立了长期稳定的合作关系。同时,公司还引入了先进的供应链管理软件和技术手段,实现了对供应链的实时监控和精细化管理。这些措施不仅提高了公司的运营效率,还降低了成本风险,为公司的发展提供了有力保障。

福声科技(FUET)公司的发展小趣事

在稳固国内市场的同时,福声科技积极寻求国际合作机会,努力拓展海外市场。公司凭借其优质的产品和服务,成功吸引了日本、韩国、加拿大、美国等多个国家和地区的客户。通过与国际知名企业的合作与交流,福声科技不仅提升了自身的技术水平和品牌影响力,还进一步拓宽了国际市场渠道,为公司的全球化战略奠定了坚实基础。

EICHHOFF公司的发展小趣事

在快速发展的同时,EICHHOFF公司也积极关注环保和可持续发展问题。公司认识到作为电子行业的一员,必须承担起保护环境、节约资源的责任。为此,EICHHOFF公司采取了一系列措施来降低生产过程中的能耗和排放。例如:引入节能设备和技术、优化生产流程、推广绿色包装等。

此外,EICHHOFF公司还积极参与环保公益活动和社会责任项目,为社会做出积极贡献。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

Faraday Electronics Inc公司的发展小趣事

在电子通信领域,Faraday Electronics Inc一直以其卓越的技术创新能力著称。公司自创立之初,就专注于研发高性能的通信芯片。经过多年的技术积累,终于在XXXX年成功推出了一款具有划时代意义的5G通信芯片。这款芯片不仅性能卓越,而且功耗极低,一经推出便迅速占领了市场,为公司带来了可观的利润。

Arima Lasers Corp公司的发展小趣事

Arima Lasers Corp深知人才是企业发展的核心驱动力。因此,公司高度重视人才培养和团队建设。通过制定完善的培训计划和激励机制,公司吸引了一批批优秀的研发人才和管理人才。这些人才为公司的发展注入了源源不断的动力,推动了公司在技术、市场和管理等各个方面的全面提升。

DATEL Inc公司的发展小趣事

随着技术的不断进步,DATEL Inc.的数据采集产品逐渐在军事领域找到了用武之地。公司接到一项为军方开发高精度数据采集系统的订单。经过深入研究和反复测试,DATEL Inc.成功交付了一套满足军方严苛要求的数据采集系统,为军方提供了准确、可靠的数据支持。这一突破不仅为DATEL Inc.赢得了军方的高度认可,也进一步扩大了公司在军事领域的影响力。

问答坊 | AI 解惑

常见电源问题征集帖。。。把问题汇聚于此贴,各个击破。。。

常见电源问题征集帖。。。汇聚于此贴,各个击破   疑问者,把您们的问题描述出来高手者,把您们的思路敲打出来灌水者,把您的精力放在学习上 问题集中,集中问题集中解决集中的问题 有问题的请到此处呐喊吧,相信您的疑问会被更快的解决   ...…

查看全部问答>

问题很难!!

1.最近刚刚用了Quartus II 9.1新版本,在使用时我想建立一个SOPC,但怎么也建立不起来,和Quartus II 8.1不一样,好像缺少了什么!在project显示的是New component..但双击它时,系统给出一些提示,有一些warnings,意思好像提示要建立一个新的compo ...…

查看全部问答>

嵌入式开发的书籍

朋友们,给几本关于嵌入式开发的书籍怎么样?(本人是初学者)    …

查看全部问答>

向有微软嵌入式MCTS认证经验的各位大侠学习

推荐下载--Windows Embedded的微软认证技术专家(MCTS)及认证免费中文简体版备考工具包 http://topic.eeworld.net/u/20091125/21/fb074b0c-ad66-494c-aea5-c8137fe77582.html?seed=867673799&r=61440219#r_61440219 请过了的大虾们多多讲点备考 ...…

查看全部问答>

WINCE ACCESS cdb 转换问题

我有一个access 的a.mdb 文件,通过active sync 下载到 wince 开发板 转换成 a.cdb 转换成功, 再转换回 .mdb 也没错误,没乱码,但就是执行sql查询 select * from [tabname] 时出现问题 调用查询 create table abc ( id int ); 也没问题 //里面原 ...…

查看全部问答>

usb的识别

USB接口有四根线:VBUS,D+,D-,GND, 那么如果WINCE设备插入的是连接到电脑的USB线的话,WINCE会自动进入MASS STORAGE模式,如果 WINCE插入的是USB接口充电器的话,就只会充电.我想了解的是: 1.这是怎样区分是哪个设备插入呢,好象两种都会给VBUS上电, ...…

查看全部问答>

LED照明特点与驱动器类型

半导体照明与一般光伏电源配用的节能灯泡相比具有节能、长寿、安全、环保、色彩丰富、体积小、耐闪烁、可靠性高、调控方便等诸多优点。发光二极管作为一种新型照明光源正在获得越来越广泛的应用。   一、半导体照明特点   电子元件二极管中半 ...…

查看全部问答>

有IAREWSTM8的先驱没?

谁有应用经验? IAR发布EWSTM8后,并没有见到其提供的标准例程框架,就像EWSTM32那样的标准工程框架,启动文件、CONF文件等都没有提供,哪位先烈能介绍下在EWSTM8下的应用经验?…

查看全部问答>

无线天然气报警系统之软件编程实现

无线天然气报警系统之软件编程实现                                 & ...…

查看全部问答>

【设计工具】 SerialIO 中文资料

SerialIO 中文资料 [ 本帖最后由 GONGHCU 于 2012-2-23 02:56 编辑 ]…

查看全部问答>