本人最近在使用HC32F003单片机做一个项目中遇到串口发送完成后程序出现跑飞死机现象,第一次出现这个问题,之前使用HC32L136时候就没有这个问题。

HC32F003有2个异步串口功能,如图下为串口概述

以下是串口的内部结构框图

串口1初始化函数

//串口1初始化函数
static void Usart1_Init(uint32_t Baud)
{stc_gpio_cfg_t stcGpioCfg;stc_uart_cfg_t  stcCfg;stc_uart_baud_cfg_t stcBaud;stc_bt_cfg_t stcBtCfg;uint16_t timer=0;DDL_ZERO_STRUCT(stcGpioCfg);Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //使能GPIO模块时钟///<TXstcGpioCfg.enDir = GpioDirOut;Gpio_Init(GpioPort3, GpioPin2, &stcGpioCfg);Gpio_SetAfMode(GpioPort3, GpioPin2, GpioAf5);          //配置P32 端口为URART0_TX///<RXstcGpioCfg.enDir = GpioDirIn;Gpio_Init(GpioPort3, GpioPin3, &stcGpioCfg);Gpio_SetAfMode(GpioPort3, GpioPin3, GpioAf5);          //配置P33 端口为URART0_RXDDL_ZERO_STRUCT(stcBaud);DDL_ZERO_STRUCT(stcBtCfg);//外设时钟使能Sysctrl_SetPeripheralGate(SysctrlPeripheralBt,TRUE);//模式0/2可以不使能Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);stcBaud.bDbaud  = 0u;//双倍波特率功能stcBaud.u32Baud = Baud;//更新波特率位置stcBaud.enMode  = UartMode1; //计算波特率需要模式参数stcBaud.u32Pclk = Sysctrl_GetPClkFreq(); //获取PCLKtimer = Uart_SetBaudRate(M0P_UART1, &stcBaud);stcBtCfg.enMD = BtMode2;stcBtCfg.enCT = BtTimer;Bt_Init(TIM1, &stcBtCfg);//调用basetimer1设置函数产生波特率Bt_ARRSet(TIM1,timer);Bt_Cnt16Set(TIM1,timer);Bt_Run(TIM1);stcCfg.enRunMode = UartMode1;//测试项,更改此处来转换4种模式测试Uart_Init(M0P_UART1, &stcCfg);///< UART中断配置Uart_EnableIrq(M0P_UART1, UartRxIrq);Uart_ClrStatus(M0P_UART1, UartRC);EnableNvic(UART0_IRQn, IrqLevel3, TRUE);
}

串口1发送函数

//UART1发送函数
static void Usart1_SendData(uint8_t Dat)
{Uart_SendDataPoll(M0P_UART1,Dat);
}

串口1中断函数

///< UART1 中断服务函数
void UART1_IRQHandler(void)
{volatile uint8_t u8RxData;if(TRUE == Uart_GetStatus(M0P_UART1, UartRC)){Uart_ClrStatus(M0P_UART1, UartRC);u8RxData = Uart_ReceiveData(M0P_UART1);}}

刚开始一直以为是硬件问题后面经过多次的调试,最后才发现是中断服务函数问题,问题是出现在中断interrupt.C文件里面的中断服务函数,能进入中断函数,但是里面的调用的测无法进入,因为本人的中断是写在串口usart1.C文件的,所以会出现无法进入子函数里面,解决方案就是不要在interrupt.c文件中调用,在usart1.C文件的调用,需要将interrupt.c文件中的void UART1_IRQHandler(void)给屏蔽了

然后在usart1.C文件中调用void UART1_IRQHandler(void)中断服务函数即可解决HC32F003串口发送完成一个字节后出现程序跑飞现象

次问题就是中断部分程序跑飞引起的死机现象,国产的单片机的库肯定是会有些小问题的,需要我们开发应用者的支持,希望能够帮到你们,最后祝大家新年快乐,兔年吉祥,工作顺利!

华大单片机HC32F003串口发送一个字节数据后死机问题相关推荐

  1. 51单片机模拟串口发送接收数据(不使用SBUF)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 51单片机.模拟串口.串口发送.串口接收.逻辑分析仪 前言 一.配置定时器 二.串口发送 三.串口接收 四.主函数 五.波形图 5.1 ...

  2. 单片机原理与应用实验——串口(C语言),使用串口发送或接收数据,定时器1作为波特率发生器

    (基于51核的STC12C5A60S2,keil uvision5 mdk 5.25 编译) 1. 定时发送1字节数据给电脑,波特率9600 #include <STC12C5A60S2.h&g ...

  3. 华大单片机 HC32F460 串口调试

    华大单片机 HC32F460 串口调试 吐槽下,华大官方例程写到太复杂了,不熟练的一时摸不上手. #include "drvs.h" /********************** ...

  4. 串口发送接收浮点型数据

    转自:https://blog.csdn.net/liangwei88624/article/details/6885803 转自:https://blog.csdn.net/newstoy/arti ...

  5. 国产超低功耗华大单片机HC32F003开发板上手入门

    今天介绍下国产超低功耗华大单片机HC32F003开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32F003开发板(如下图所示)分为板载调试模块(左半部分 ...

  6. STM32L152RE实现串口发送及接收数据

    本文主要讲解用keil软件实现USART串口发送及接收数据,默认读者keil环境已经配好,且头文件已正确引入,如出现编译错误以及st-link下载问题,请自行百度解决. 串口发送和接收数据是一件看起来 ...

  7. 华大单片机HC32F003如何新建工程(ddl库版本)

    华大单片机HC32F003如何新建工程(ddl库版本) 准备工作 正式工作 准备工作 在硬盘中找个位置建立mdk_test文件夹,此文件夹用来存储项目中调用及生成的所有非内核的文件(内核文件位置与ke ...

  8. enc28j60发送大量数据时死机

    我用的是lwip,enc28j60作为网卡,发送大量数据时死机,无法ping通,一度以为是lwip协议栈的问题. 经过半个月的查询,发现时enc28j60电流的问题. 可以加大电流,enc28j60即 ...

  9. STC51单片机26——串口发送DS18B20温度值

    #include<reg51.h> #define uchar unsigned char                         #define uint unsigned in ...

最新文章

  1. matlab编写的程序输入参数怎么写,用matlab编写一个用EM算法估计参数的程序
  2. [备忘]macOS和Windows下很赞的软件
  3. 计算机 网络访问保护,开启win2008网络访问保护的具体步骤
  4. java----OO的概念和设计原则(转)
  5. 如何用JAVAC一次性编译多个包下的JAVA文件 ;JAVA和JAVAC 命令行;java 带有包名编译并运行,附带外部依赖jar包运行
  6. repast HPC初探(运行其自带例子过程中出现的问题)
  7. 软件如何实现屏幕共享?
  8. JS对象属性操作之定义属性篇
  9. ubuntu16.04 设置动态ip和静态ip及route命令的使用
  10. 免费无损高品质音乐下载器V3.5
  11. python选择结构练习(一)
  12. DQN-FlappyBird项目学习
  13. cv2.imread()读出的矩阵shape
  14. 关于计算机专业的调整与优化,Win10这样做优化让你的电脑更流畅
  15. wifi 小程序 透传_微信小程序之一键连接wifi
  16. css网页布局问题,CSS网页布局常见问题小结
  17. 无人机智能巡检系统及功能介绍
  18. 颈椎不太好适合学计算机那,低头对颈椎不好,那仰头是不是有好处?保护颈椎要记住5个要点,10个动作!...
  19. 机器学习深度学习视频资料汇总
  20. Eclipse快捷键大全(转载)

热门文章

  1. 2019 南昌网络赛D FFT多个多项式相乘
  2. matlab矩阵正交变换,在线计算专题(12):矩阵的特征值、特征向量、正交变换与二次型与常见矩阵分解...
  3. 基于JSP实现的超市管理系统
  4. win11下链接企业级网络失败的解决方案
  5. 什么是Python?Python有什么特性?
  6. 智慧工厂:EasyNVR如何让工厂实现现代化与智能化视频监控与管理?
  7. Composer 使用简单教程
  8. 解决知云文献翻译软件Translator反应慢问题
  9. ant-design-vue 自由切换 暗黑模式dark
  10. lepus(天兔)的安装与使用