打印
[DemoCode下载]

NM1200利用定时器自动翻转一个IO

[复制链接]
710|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanduzi|  楼主 | 2018-2-9 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/******************************************************************************
* [url=home.php?mod=space&uid=288409]@file[/url]     main.c
* [url=home.php?mod=space&uid=895143]@version[/url]  V1.00
* $Revision: 2 $
* $Date: 15/04/08 11:44a $
* [url=home.php?mod=space&uid=247401]@brief[/url]    Demonstrate the timer 0 toggle out function on pin P3.4.
*
* @note
* Copyright (C) 2015 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
#include <stdio.h>
#include "NM1200_NM1100.h"

void SYS_Init(void)
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Read User Config to select internal high speed RC */
    SystemInit();

    /* Enable external 12MHz XTAL (UART), and HIRC */
    CLK->PWRCTL = CLK_PWRCTL_XTL12M | CLK_PWRCTL_HIRCEN_Msk;

    /* Waiting for clock ready */
    CLK_WaitClockReady(CLK_STATUS_XTLSTB_Msk | CLK_STATUS_HIRCSTB_Msk);

    /* Enable UART and Timer 0 clock */
    CLK->APBCLK = CLK_APBCLK_UART0CKEN_Msk | CLK_APBCLK_TMR0CKEN_Msk;

    /* Select UART clock source from external crystal*/
    CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART0SEL_Msk) | CLK_CLKSEL1_UART0SEL_XTAL;

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


    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Set P1 multi-function pins for UART RXD, TXD */
    SYS->P0_MFP = SYS_MFP_P00_TXD | SYS_MFP_P01_RXD;

    /* Set P3 multi-function pins for Timer toggle output pin */
    SYS->P3_MFP = SYS_MFP_P34_T0;

    /* Lock protected registers */
    SYS_LockReg();
}

int main(void)
{
    /* Init System, IP clock and multi-function I/O
       In the end of SYS_Init() will issue SYS_LockReg()
       to lock protected register. If user want to write
       protected register, please issue SYS_UnlockReg()
       to unlock protected register if necessary */
    SYS_Init();

    /* Init UART to 115200-8n1 for print message */
    UART_Open(UART0, 115200);

    printf("\nThis sample code use timer 0 to generate 1kHz toggle output to T0 pin (P3.4) \n");

    /* To generate 1kHZ toggle output, timer frequency must set to 2000Hz.
       Because toggle output state change on every timer timeout event */
    TIMER_Open(TIMER0, TIMER_TOGGLE_MODE, 2000);
    TIMER_Start(TIMER0);

    while(1);
}

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




沙发
wanduzi|  楼主 | 2018-2-9 17:16 | 只看该作者
感觉这个很实用,不用担心中断后再操作造成的延时了。

使用特权

评论回复
板凳
yiyigirl2014| | 2018-2-9 17:43 | 只看该作者
配置了这个,定时器还可以做其他的吗

使用特权

评论回复
地板
dongnanxibei| | 2018-2-10 17:07 | 只看该作者
这个功能很实用。

使用特权

评论回复
5
dongnanxibei| | 2018-2-10 17:07 | 只看该作者
可以映射到每一个IO上吗

使用特权

评论回复
6
dongnanxibei| | 2018-2-10 17:08 | 只看该作者
设置成了这个功能后,貌似就不用配置IO为输出模式了,真方便。

使用特权

评论回复
7
734774645| | 2018-2-10 17:38 | 只看该作者
比手动设置翻转方便多了

使用特权

评论回复
8
antusheng| | 2018-2-11 11:56 | 只看该作者
应该可以使用其他目的。

使用特权

评论回复
9
dongliushui| | 2018-2-11 12:01 | 只看该作者
这个设计前所未有。

使用特权

评论回复
10
zhuotuzi| | 2018-2-19 16:54 | 只看该作者
不知道这个功能影响定时器的其他中断不

使用特权

评论回复
11
heisexingqisi| | 2018-2-21 10:15 | 只看该作者
这个功能是怎么实现的,其他单片机可以这么做吗

使用特权

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

本版积分规则

144

主题

1744

帖子

3

粉丝