打印
[DemoCode下载]

M263开发板点灯

[复制链接]
3286|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuomuniao110|  楼主 | 2021-7-13 22:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
借到一块M263开发板,第一步先学点灯。折腾了2个小时终于搞清楚了,走起:
开发板的LED在PB10端口,开发板的Button1在PG4端口
接下来就是改写代码了

#include <stdio.h>
#include "NuMicro.h"



void SYS_Init(void)
{

    /* Set PF multi-function pins for XT1_OUT(PF.2) and XT1_IN(PF.3) */
    SYS->GPF_MFPL = (SYS->GPF_MFPL & (~SYS_GPF_MFPL_PF2MFP_Msk)) | SYS_GPF_MFPL_PF2MFP_XT1_OUT;
    SYS->GPF_MFPL = (SYS->GPF_MFPL & (~SYS_GPF_MFPL_PF3MFP_Msk)) | SYS_GPF_MFPL_PF3MFP_XT1_IN;

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Enable HIRC clock */
    CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

    /* Wait for HIRC clock ready */
    CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);

    /* Select HCLK clock source as HIRC and HCLK clock divider as 1 */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));

    /* Enable HXT clock */
    CLK_EnableXtalRC(CLK_PWRCTL_HXTEN_Msk);

    /* Wait for HXT clock ready */
    CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);

    /* Enable PLL */
    CLK->PLLCTL = CLK_PLLCTL_128MHz_HIRC;

    /* Waiting for PLL stable */
    CLK_WaitClockReady(CLK_STATUS_PLLSTB_Msk);

    /* Select HCLK clock source as PLL and HCLK source divider as 2 */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_PLL, CLK_CLKDIV0_HCLK(2));

    /* Enable UART module clock */
    CLK_EnableModuleClock(UART0_MODULE);

    /* Select UART module clock source as HIRC and UART module clock divider as 1 */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));

    /*---------------------------------------------------------------------------------------------------------*/
    /* Init I/O Multi-function                                                                                 */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Set multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFPH = (SYS->GPB_MFPH & (~(UART0_RXD_PB12_Msk | UART0_TXD_PB13_Msk))) | UART0_RXD_PB12 | UART0_TXD_PB13;

}

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

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





void blink1(void)
{

}

void blink2(void)
{
                CLK_SysTickDelay(500000);
                GPIO_TOGGLE(PB10);
}


void blink3(void)
{
                CLK_SysTickDelay(100000);
                GPIO_TOGGLE(PB10);
}

/*---------------------------------------------------------------------------------------------------------*/
/*  Main Function                                                                                          */
/*---------------------------------------------------------------------------------------------------------*/
int32_t main(void)
{

                void (*blink)(void);
                blink=blink1;


    /* 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();

    printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %dHz\n", SystemCoreClock);

    printf("+-------------------------------------------------+\n");
    printf("|    PB.10(Output) and PG.4(Input) Sample Code     |\n");
    printf("+-------------------------------------------------+\n\n");

    /*-----------------------------------------------------------------------------------------------------*/
    /* GPIO Basic Mode Test --- Use Pin Data Input/Output to control GPIO pin                              */
    /*-----------------------------------------------------------------------------------------------------*/
    printf("  >> LED at PB.10 ; Button1 at PG.4 \n");


    /* Configure PB.10 as Output mode and PG.4 as Input mode then close it */
    GPIO_SetMode(PB, BIT10, GPIO_MODE_OUTPUT);
    GPIO_SetMode(PG, BIT4,  GPIO_MODE_INPUT);
    PB10 = 1;

    printf("GPIO PB.10(output mode) and PD.7(input mode) ......");
               
               
        while(1)
        {
                blink();
               
                if(PG4==0)
                        {
                                CLK_SysTickDelay(50);
                                while(PG4==0);
                               
                                blink=blink2;
                        }
        }


}

开机后打印一些信息,然后就是进入一个空函数,这个时候LED是不亮的,因为初始化给关闭了。
然后按下Button1,松手后,修改主循环的函数指针到一个闪烁的子函数,接下来就是闪烁了。
同时学会了使用函数指针。
其实就是将函数名换成了(*p)
p为你的指针名字。比如我这里用的blink
然后调用这个指针指向的函数就是 p();
如果有参数就加上参数,如果有返回值,就加上返回值类型,没有就全部用void表示。

使用特权

评论回复
沙发
xixi2017| | 2021-7-13 22:58 | 只看该作者
感谢分享,学习一下。

使用特权

评论回复
板凳
jiekou001| | 2021-7-15 16:58 | 只看该作者
受益匪浅。。。感谢分析。

使用特权

评论回复
地板
jiekou001| | 2021-7-15 17:02 | 只看该作者
function square(iteratorMaxCount,currentNumber)
   if currentNumber<iteratorMaxCount
   then
      currentNumber = currentNumber+1
   return currentNumber, currentNumber*currentNumber
   end
end

for i,n in square,3,0
do
   print(i,n)
end

使用特权

评论回复
5
mutable| | 2021-7-23 16:46 | 只看该作者
真不错,棒棒的

使用特权

评论回复
6
734774645| | 2021-7-25 21:05 | 只看该作者
星星点点。现在代码高亮了,给力。

使用特权

评论回复
7
coshi| | 2021-8-13 20:56 | 只看该作者
这个是官方开发板吗

使用特权

评论回复
8
tfqi| | 2021-8-13 20:59 | 只看该作者
能给个开发板的图片吗

使用特权

评论回复
9
wiba| | 2021-8-13 21:02 | 只看该作者
这个代码写的 好有水平啊

使用特权

评论回复
10
zljiu| | 2021-8-13 21:03 | 只看该作者
非常简单但是很简约的代码

使用特权

评论回复
11
drer| | 2021-8-13 21:05 | 只看该作者
新入手的板子两个小时点亮已经很不错了

使用特权

评论回复
12
kiwis66| | 2021-8-18 16:13 | 只看该作者
这个也是开发板么?能不能给个图片看看

使用特权

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

本版积分规则

207

主题

3379

帖子

10

粉丝