打印
[DemoCode下载]

M051的几个主要头文件

[复制链接]
962|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangcunxiake|  楼主 | 2015-11-21 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
common.h
#ifndef   __COMMON_H__
#define   __COMMON_H__

#include <stdint.h>
#include <stdio.h>
#include "M051.h"
#include "Register_Bit.h"
#include "Uart.h"

void Un_Lock_Reg(void);
void Lock_Reg(void);
void PLL_Enable(void);
void NSR_Enable(void);
void NSR_Disable(void);

#endif  //__COMMON_H__

这个里面主要是解锁,加锁,PLL使能,NSR使能和关闭。
沙发
huangcunxiake|  楼主 | 2015-11-21 14:54 | 只看该作者
UART.h
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2010 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

#ifndef __UART_H__
#define __UART_H__

void UART_Init(void);
void Send_Data_To_PC (uint8_t c);
uint8_t Receive_Data_From_PC(void);
void Show_Pass(void);
void Show_Fail(void);

#endif

这个头文件主要是串口初始化,发送数据到PC,接收数据,通过,失败。。。

使用特权

评论回复
板凳
huangcunxiake|  楼主 | 2015-11-21 14:55 | 只看该作者

common.c

/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2010 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

#include <stdint.h>
#include "M051.h"
#include "Register_Bit.h"

/*en:************************************************************************************
Description:      Unlock protected register bits so that user can access them                                
****************************************************************************************/
/*中:************************************************************************************
描述:  解锁被保护的寄存器位,以便用户可以访问它们
****************************************************************************************/
void Un_Lock_Reg(void)
{
    RegLockAddr = 0x59;
    RegLockAddr = 0x16;
    RegLockAddr = 0x88;
}

/*en:************************************************************************************
Description:      Lock protected register bits to protect system from damage due to noise                                
****************************************************************************************/
/*中:************************************************************************************
描述:  禁止对被保护的寄存器位的访问,防止由于系统干扰引起这些位被修改,从而引起系统崩溃
****************************************************************************************/
void Lock_Reg(void)
{
    RegLockAddr = 0x00;
}

/*en:************************************************************************************
Description:      Enable PLL                                
****************************************************************************************/
/***************************************************************************************
描述:  使能PLL功能
****************************************************************************************/
void PLL_Enable(void)
{
    PLLCON &= ~(PLL_OE|PLL_PD);
}

/*en:************************************************************************************
Description:      Enable nosie sensitivity reduction function.                                
****************************************************************************************/
/*中:************************************************************************************
描述:  使能降低噪声的敏感度功能
****************************************************************************************/
void NSR_Enable(void)
{
    Un_Lock_Reg();
    PORCR = 0x00005AA5;
}

/*en:************************************************************************************
Description:      Disable nosie sensitivity reduction function.                                
****************************************************************************************/
/*中:************************************************************************************
描述:  禁用降低噪声的敏感度功能
****************************************************************************************/
void NSR_Disable(void)
{
    Un_Lock_Reg();
    PORCR = 0x00000000;
}


对应.h的实现方法,如何操作了相关寄存器。

使用特权

评论回复
地板
huangcunxiake|  楼主 | 2015-11-21 14:58 | 只看该作者


该函数展示了如何通过串口展示相关信息。
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2011 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

#include <stdio.h>
#include <stdint.h>
#include "M051.h"
#include "Register_Bit.h"
#include "Uart.h"

/*en:************************************************************************************
Description:      Initialize UART.                                
****************************************************************************************/
/*中:************************************************************************************
描述:  初始化UART
****************************************************************************************/
void UART_Init(void)
{
    P3_MFP = P3_MFP & (~(P31_TXD0 | P30_RXD0)) | (TXD0 | RXD0); //配置P3.1和P3.0为UART功能//en:Set P3.1 and P3.0 to UART0 function

    IPRSTC2 |= UART0_RST;                            //复位UART模块//en:Reset UART0 module
    IPRSTC2 &= ~UART0_RST;                           //UART模块从复位状态恢复到正常工作状态//en:Resume UART0 to normal mode

    APBCLK |= UART0_CLKEN;                           //使能UART时钟//en:Enable UART0 clock
    CLKSEL1 = CLKSEL1 & (~UART_CLK) | UART_12M;      //选择外部12M作为UART时钟源//en:Select external 12M as UART0 clock source
    CLKDIV &= ~(15<<8);                              //设置UART时钟除频值为0//en:UART clock no division

    UA0_FCR |= TX_RST;                               //复位发送FIFO//en:Reset transmit FIFO
    UA0_FCR |= RX_RST;                               //复位接收FIFO//en:Reset receive FIFO

    UA0_LCR &= ~PBE;                                 //校验位禁止//en:None parity
    UA0_LCR = (UA0_LCR & (~WLS)) | WL_8BIT;          //数据宽度为8位//en:Data width 8 bits
    UA0_LCR &= NSB_ONE;                              //1位停止位//en:1 bit stop

    UA0_BAUD |= DIV_X_EN;                            //模式2:DIV_X_EN = 1//en:Mode2:DIV_X_EN = 1
    UA0_BAUD |= DIV_X_ONE;                           //模式2:DIV_X_ONE =1//en:Mode2:DIV_X_ONE = 1
   
    UA0_BAUD |= ((12000000 / 115200) - 2);           //设置波特率为115200,模式2波特率=UART_CLK/(UA_BAUD+2)//en:Set BaudRate to 115200,BaudRate==UART_CLK/(UA_BAUD+2) in mode 2
}

/*en:************************************************************************************
  Parameter:                        c: char to be sent.                                    
  Description:          Send a char to PC.                                   
****************************************************************************************/
/*中:************************************************************************************
参数 :  c: 要发送到字符
描述:   发送一个字符到PC
****************************************************************************************/
void Send_Data_To_PC (uint8_t c)
{
    while((UA0_FSR&TX_FULL) != 0);                   //发送FIFO满时等待//en:Wait until UART transmit FIFO is not full
    UA0_THR = (uint8_t) c;                           //通过UART0发送一个字符//en:Transmit a char via UART0
}

/*en:************************************************************************************
  Return:                            A char.                                    
  Description:          Get a char from PC.                                   
****************************************************************************************/
/*中:************************************************************************************
返回值: 一个字符
描述:   从PC获取一个字符
****************************************************************************************/
uint8_t Receive_Data_From_PC(void)
{
    while((UA0_FSR&RX_EMPTY) != 0);                  //等字符//en:Wait until an avaliable char present in RX FIFO
    return ((uint8_t)UA0_RBR);                       //返回接收到的字符//en:Return received char
}

void Show_Pass(void)
{
    printf ("\n");
    printf ("\n");
    printf ("    * * *         *      *  \n");
    printf ("   *     *        *     *   \n");
    printf ("  *       *       *    *    \n");
    printf ("  *       *       *   *     \n");
    printf ("  *       *       *  *      \n");
    printf ("  *       *       * *       \n");
    printf ("  *       *       *   *     \n");
    printf ("  *       *       *    *    \n");
    printf ("  *       *       *     *   \n");
    printf ("   *     *        *      *  \n");
    printf ("    * * *         *       * \n");
    printf ("\n");
    printf ("\n");
}

void Show_Fail(void)
{
    printf ("\n");
    printf ("\n");
    printf ("     *                   *    \n");
    printf ("       *               *      \n");
    printf ("         *           *        \n");
    printf ("           *       *          \n");
    printf ("             *   *            \n");
    printf ("               *              \n");
    printf ("             *   *            \n");
    printf ("           *       *          \n");
    printf ("         *           *        \n");
    printf ("       *               *      \n");
    printf ("     *                   *    \n");
    printf ("\n");
    printf ("\n");
}


使用特权

评论回复
5
稳稳の幸福| | 2015-11-21 16:34 | 只看该作者
禁止对被保护的寄存器位的访问,防止由于系统干扰引起这些位被修改,从而引起系统崩溃
****************************************************************************************/
void Lock_Reg(void)

    RegLockAddr = 0x00;

使用特权

评论回复
6
C洛达尔多| | 2015-11-21 17:12 | 只看该作者
这些头文件很有用,谢谢楼主的分享

使用特权

评论回复
7
huangcunxiake|  楼主 | 2015-11-23 13:42 | 只看该作者
描述:  使能PLL功能
****************************************************************************************/
void PLL_Enable(void)
{
    PLLCON &= ~(PLL_OE|PLL_PD);
}

使用特权

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

本版积分规则

189

主题

3407

帖子

9

粉丝