[DemoCode下载] M051的几个主要头文件

[复制链接]
 楼主| 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 | 显示全部楼层


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

  6. #include <stdio.h>
  7. #include <stdint.h>
  8. #include "M051.h"
  9. #include "Register_Bit.h"
  10. #include "Uart.h"

  11. /*en:************************************************************************************
  12. Description:      Initialize UART.                                
  13. ****************************************************************************************/
  14. /*中:************************************************************************************
  15. 描述:  初始化UART
  16. ****************************************************************************************/
  17. void UART_Init(void)
  18. {
  19.     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

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

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

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

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

  30.     UA0_BAUD |= DIV_X_EN;                            //模式2:DIV_X_EN = 1//en:Mode2:DIV_X_EN = 1
  31.     UA0_BAUD |= DIV_X_ONE;                           //模式2:DIV_X_ONE =1//en:Mode2:DIV_X_ONE = 1
  32.    
  33.     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
  34. }

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

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

  61. void Show_Pass(void)
  62. {
  63.     printf ("\n");
  64.     printf ("\n");
  65.     printf ("    * * *         *      *  \n");
  66.     printf ("   *     *        *     *   \n");
  67.     printf ("  *       *       *    *    \n");
  68.     printf ("  *       *       *   *     \n");
  69.     printf ("  *       *       *  *      \n");
  70.     printf ("  *       *       * *       \n");
  71.     printf ("  *       *       *   *     \n");
  72.     printf ("  *       *       *    *    \n");
  73.     printf ("  *       *       *     *   \n");
  74.     printf ("   *     *        *      *  \n");
  75.     printf ("    * * *         *       * \n");
  76.     printf ("\n");
  77.     printf ("\n");
  78. }

  79. void Show_Fail(void)
  80. {
  81.     printf ("\n");
  82.     printf ("\n");
  83.     printf ("     *                   *    \n");
  84.     printf ("       *               *      \n");
  85.     printf ("         *           *        \n");
  86.     printf ("           *       *          \n");
  87.     printf ("             *   *            \n");
  88.     printf ("               *              \n");
  89.     printf ("             *   *            \n");
  90.     printf ("           *       *          \n");
  91.     printf ("         *           *        \n");
  92.     printf ("       *               *      \n");
  93.     printf ("     *                   *    \n");
  94.     printf ("\n");
  95.     printf ("\n");
  96. }


稳稳の幸福 发表于 2015-11-21 16:34 | 显示全部楼层
禁止对被保护的寄存器位的访问,防止由于系统干扰引起这些位被修改,从而引起系统崩溃
****************************************************************************************/
void Lock_Reg(void)

    RegLockAddr = 0x00;
C洛达尔多 发表于 2015-11-21 17:12 | 显示全部楼层
这些头文件很有用,谢谢楼主的分享
 楼主| huangcunxiake 发表于 2015-11-23 13:42 | 显示全部楼层
描述:  使能PLL功能
****************************************************************************************/
void PLL_Enable(void)
{
    PLLCON &= ~(PLL_OE|PLL_PD);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

222

主题

3700

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部

222

主题

3700

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部