久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8398|回復: 0
收起左側

新唐M051學習之(2)-串口

[復制鏈接]
ID:75013 發表于 2015-3-21 17:42 | 顯示全部樓層 |閱讀模式
        今天參照CMSIS庫里面的例子寫了個簡單的串口程序。
        在寫串口程序之前先把硬件連接好。準備一個USB轉TTL的模塊(我用的是STC的下載器),他可以把M051發送的數據傳送到計算機上,通過串口助手程序接收數據。USB轉TTL模塊的TXD接P3.0,RXD接P3.1,GND接M051的GND(也就是共地)。安裝12M晶振和30pf電容。如下圖所示。

MDK中也要做如下設置。從M051SeriesBSP_CMSIS_v2.01.002 里找到cor_cm0.c 、 system_M051Series.c 、 retarget.c 三個文件,加入到項目中,如下圖示。


includle paths 里面也要多包含兩個路徑:
C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\CMSIS\CM0\CoreSupport
C:\Keil\M051SeriesBSP_CMSIS_v2.01.002\M051SeriesBSP_CMSIS_v2.01.002\LibM051Series\StdDriver\inc

源文件如下:

#include <stdio.h>
#include <M051Series.h>
#define PLLCON_SETTING      SYSCLK_PLLCON_50MHz_XTAL
#define PLL_CLOCK           50000000
void SystemInit(void)
{}
void SYS_Init(void)
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init System Clock                                                                                       */
/*---------------------------------------------------------------------------------------------------------*/
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Enable External XTAL (4~24 MHz) */
    SYSCLK->PWRCON |= SYSCLK_PWRCON_XTL12M_EN_Msk;

    /* Waiting for 12MHz clock ready */
    SYS_WaitingForClockReady( SYSCLK_CLKSTATUS_XTL12M_STB_Msk);

    /* Switch HCLK clock source to XTAL */
    SYSCLK->CLKSEL0 = SYSCLK_CLKSEL0_HCLK_XTAL;

    /* Set PLL to power down mode and PLL_STB bit in CLKSTATUS register will be cleared by hardware.*/
    SYSCLK->PLLCON|= SYSCLK_PLLCON_PD_Msk;

    /* Set PLL frequency */        
    SYSCLK->PLLCON = PLLCON_SETTING;

    /* Waiting for clock ready */
    SYS_WaitingForClockReady(SYSCLK_CLKSTATUS_PLL_STB_Msk);

    /* Switch HCLK clock source to PLL */
    SYSCLK->CLKSEL0 = SYSCLK_CLKSEL0_HCLK_PLL;

    /* Enable IP clock */        
    SYSCLK->APBCLK = SYSCLK_APBCLK_UART0_EN_Msk | SYSCLK_APBCLK_UART1_EN_Msk;

    /* Select IP clock source */
    SYSCLK->CLKSEL1 = SYSCLK_CLKSEL1_UART_XTAL;;

    /* Reset PWMB channel0~channel3 */                    
    SYS->IPRSTC2 = SYS_IPRSTC2_PWM47_RST_Msk;                    
    SYS->IPRSTC2 = 0;      


    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
    //SystemCoreClockUpdate();
    PllClock        = PLL_CLOCK;            // PLL
    SystemCoreClock = PLL_CLOCK / 1;        // HCLK
    CyclesPerUs     = PLL_CLOCK / 1000000;  // For SYS_SysTickDelay()

/*---------------------------------------------------------------------------------------------------------*/
/* Init I/O Multi-function                                                                                 */
/*---------------------------------------------------------------------------------------------------------*/
    /* Set P3 multi-function pins for UART0 RXD and TXD  */
    SYS->P3_MFP = SYS_MFP_P30_RXD0 | SYS_MFP_P31_TXD0;

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

void UART0_Init()
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init UART                                                                                               */
/*---------------------------------------------------------------------------------------------------------*/
    UART0->BAUD = UART_BAUD_MODE2 | UART_BAUD_DIV_MODE2(__XTAL,115200);

    _UART_SET_DATA_FORMAT(UART0, UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1);
}


int main(void)
{
    uint32_t u32Item;
    SYS_Init();
    UART0_Init();
    printf("請發送一個字符\n");
    while(1)
    {
        u32Item = getchar();
        printf("你發送的是:%c\n",u32Item);
    }
}



燒寫程序,并連接串口助手(我用的是STC的燒寫工具里的串口助手),助手的波特率必須設置115200,因為M051的程序里設置的是115200。隨便發送幾個字母測試。



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品免费在线观看 | 在线成人免费观看 | 韩日精品一区 | 国产精品一区二区不卡 | 久草中文在线 | 日韩电影中文字幕 | 日韩二区三区 | 久久亚洲精品国产精品紫薇 | 精品熟人一区二区三区四区 | 国产专区在线 | 久久草在线视频 | www.欧美| 在线观看免费国产 | 99视频免费在线 | 免费看一区二区三区 | 手机看片1 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 狠狠插天天干 | 求毛片 | av片在线免费看 | 91精品欧美久久久久久久 | 日韩成人高清 | 久热免费 | 日本韩国电影免费观看 | www久久99| av资源中文在线天堂 | 免费在线精品视频 | 久久av一区二区三区 | 免费一区二区三区 | 亚洲精品一区在线 | 日韩一区二区三区视频在线观看 | 国内自拍视频在线观看 | 国产亚洲精品久久午夜玫瑰园 | 一级a毛片 | 免费看片在线播放 | 国产成人黄色 | 四虎影院免费在线播放 | 国产精品一区二区久久精品爱微奶 | 国产精品综合一区二区 | 精品欧美乱码久久久久久 | 毛片a区|