打印
[DemoCode下载]

M058S的硬件错误信息检测

[复制链接]
590|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
天灵灵地灵灵|  楼主 | 2016-11-25 22:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/******************************************************************************
* [url=home.php?mod=space&uid=288409]@file[/url]     main.c
* [url=home.php?mod=space&uid=895143]@version[/url]  V3.00
* $Revision: 1 $
* $Date: 15/02/06 1:43p $
* [url=home.php?mod=space&uid=247401]@brief[/url]    Show hard fault information when hard fault happened.
*
* @note
* Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#include <stdio.h>
#include <string.h>
#include "M058S.h"


void SYS_Init(void)
{

    /* Enable UART0 clock */
    CLK->APBCLK = CLK_APBCLK_UART0_EN_Msk;

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock and cyclesPerUs automatically. */
    SystemCoreClockUpdate();

    /* Set P3 multi-function pins for UART0 RXD and TXD  */
    SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk);
    SYS->P3_MFP |= (SYS_MFP_P30_RXD | SYS_MFP_P31_TXD);

}

void UART0_Init()
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init UART                                                                                               */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Reset UART0 */
    SYS_ResetModule(UART0_RST);

    /* Configure UART0 and set UART0 Baudrate */
    UART_Open(UART0, 115200);
}

int main()
{

    char *tmp = 0;

    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Init System, peripheral clock and multi-function I/O */
    SYS_Init();

    /* Lock protected registers */
    SYS_LockReg();

    /* Init UART0 for printf */
    UART0_Init();

    strcpy(tmp, "HardFaultTest");

    while(1);  

}

/*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/


沙发
huangcunxiake| | 2016-11-26 22:15 | 只看该作者
原型声明:char *strcpy(char* dest, const char *src);
头文件:#include <string.h> 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
只看出来用这个函数,把那个字符串拷贝到指定的地址了。

使用特权

评论回复
板凳
yiyigirl2014| | 2016-11-27 00:14 | 只看该作者
strcpy(tmp, "HardFaultTest");

使用特权

评论回复
地板
dongnanxibei| | 2016-11-27 16:25 | 只看该作者
没看出来哪儿有错误了,就是简单的一个打印输出?

使用特权

评论回复
5
dongnanxibei| | 2016-11-27 16:26 | 只看该作者
仔细看了一下,连打印都没有啊,好奇怪,难打就是检测这种错误 ?

使用特权

评论回复
6
heisexingqisi| | 2016-11-27 18:45 | 只看该作者
从来没用过这个函数,回头试试看

使用特权

评论回复
7
598330983| | 2016-11-27 23:43 | 只看该作者
一个字符串拷贝的函数。

使用特权

评论回复
8
wahahaheihei| | 2016-11-28 10:33 | 只看该作者
应该是检测到了错误后,打印一条消息。

使用特权

评论回复
9
643757107| | 2016-11-28 23:19 | 只看该作者
1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。

2、堆栈溢出。增加堆栈的大小。

使用特权

评论回复
10
天灵灵地灵灵|  楼主 | 2016-11-29 21:10 | 只看该作者
这就是个例子,官方提供。

使用特权

评论回复
11
huangcunxiake| | 2016-12-4 15:31 | 只看该作者
留着备用,这个初始化用的很棒

使用特权

评论回复
12
玛尼玛尼哄| | 2016-12-5 16:40 | 只看该作者
又学会了一种打印错误的方式

使用特权

评论回复
13
heisexingqisi| | 2016-12-6 18:43 | 只看该作者
其实有很多种这种错误调试的方式,比如断言也可以。

使用特权

评论回复
14
dongnanxibei| | 2016-12-7 21:57 | 只看该作者
常见的 是用断言的中断形式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

174

主题

3361

帖子

13

粉丝