不如再贴上代码吸引人
- /************************************************************************************
- * File: main.c
- * Purpose: Cortex-M0/0+/1 main file.
- * Replace with your code.
- * Date: 05 July 2013
- * Info: If __NO_SYSTEM_INIT is defined in the Build options,
- * the startup code will not branch to SystemInit()
- * and the function can be removed
- ************************************************************************************/
- /*---------------------------------------------------------------------------------------------------------*/
- /* */
- /* Copyright(c) 2010 Nuvoton Technology Corp. All rights reserved. */
- /* */
- /*---------------------------------------------------------------------------------------------------------*/
- /***************************************************************************************
- 本代码演示GPIO功能,P0/1/2/3会输出高低电平
- ****************************************************************************************/
- void SystemInit (void) {}
- #include "common.h"
- #define P0_MODE 0x5555
- #define P1_MODE 0x5555
- #define P2_MODE 0x5555
- #define P3_MODE 0x5555
- //void TMR0_Delay1ms(uint32_t ulCNT);
- //void Timer0_Init(void);
- /***************************************************************************************
- 参数 : ulCNT, 延迟时间,毫秒
- 描述 用Timer0定时
- ****************************************************************************************/
- void TMR0_Delay1ms(uint32_t ulCNT)
- {
- TCMPR0 = 12000; //12MHz/96000 = 0.125KHz
- TCSR0 |= CEN | TMR_IE; //启动定时器Timer0并使能Timer0中断
- while (ulCNT != 1)
- {
- while((TISR0&TMR_TIF) != TMR_TIF); //定时时间到否?
- TISR0 |= TMR_TIF; //定时器清标志位
- ulCNT--;
- }
- TCSR0 &= ~CEN; //停止Timer0定时器
- }
- /***************************************************************************************
- 描述 : 初始化定时器Timer0,周期模式
- ****************************************************************************************/
- void Timer0_Init()
- {
- APBCLK |= TMR0_CLKEN; //使能APB时钟
- CLKSEL1 = CLKSEL1 & (~TM0_CLK) | TM0_12M; //选择外部晶振作为定时器时钟源
- //CLKSEL1 |= TM0_12M;
- TCSR0 |= CRST; //复位定时器
- TCSR0 &= 0xFFFFFF00 ; //时钟不分频
- TCSR0 = TCSR0 & (~TMR_MODE) | MODE_PERIOD; //周期模式
- //TCSR0 |= MODE_PERIOD;
- }
- int main(void)
- {
- Un_Lock_Reg(); //解锁被保护的寄存器位,以便用户访问
- PWRCON |= XTL12M_EN; //使能外部12MHz晶振
- while((CLKSTATUS & XTL12M_STB) == 0); //等12M晶振时钟稳定
- CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //选外部12MHz晶振为系统时钟
- //CLKSEL0 |= HCLK_12M;
- Lock_Reg(); //重新锁被保护的寄存器位
- P0_PMD = P0_MODE; //配置P0口所有引脚为输出模式
- P1_PMD = P1_MODE; //配置P1口所有引脚为输出模式
- P2_PMD = P2_MODE; //配置P2口所有引脚为输出模式
- //P3_PMD = P3_MODE; //配置P3口所有引脚为输出模式
- P3_PMD |= (1<<12); //p3.6 out mode
- //P3_DOUT |= (1<<6);
- Timer0_Init();
- //P3_DOUT = 0x00;
- while(1)
- {
- P0_DOUT = 0x00; //P0口所有引脚输出0
- P1_DOUT = 0x00; //P1口所有引脚输出0
- P2_DOUT = 0x00; //P2口所有引脚输出0
- //P3_DOUT = 0x00; //P3口所有引脚输出0
- P3_DOUT |= (1<<6);
- TMR0_Delay1ms(500);
- P0_DOUT = 0xFF; //P0口所有引脚输出1
- P1_DOUT = 0xFF; //P1口所有引脚输出1
- P2_DOUT = 0xFF; //P2口所有引脚输出1
- P3_DOUT &= ~(1<<6);
- //P3_DOUT = 0xFF; //P3口所有引脚输出1
- TMR0_Delay1ms(500);
- }
- return 0;
- }
|