[活动专区]

【AC7811开发板试用活动】串口通讯

[复制链接]
368|0
手机看帖
扫描二维码
随时随地手机跟帖
ddllxxrr|  楼主 | 2019-10-27 09:48 | 显示全部楼层 |阅读模式
    我这个人很“懒”,但是爱思考,属于“拿来就用”。
    所以我对库很感兴趣,而没有库单凭比特位编程。本人极不赞同也严重鄙视。
    有人给你指了个明道,你确偏偏走小道。表示不理解,听说关公就是兵少走小道,让陆逊给拿下的。
    居然发现现在有很多人在用寄存器编程。不知是怎么回事?????   

     言归正传:
     其实,AC7811的GPIO例程中就给了串口的初始化函数:
      AC7811-2.jpg   
     其具体内容如下:

void InitDebug(void)
{
#ifdef ITM_DEBUG_OUT
#else

    GPIO_SetFunc(49, 1);
    GPIO_SetFunc(50, 1);
    CKGEN_Enable(DEBUG_UART_CLK, 1);
    CKGEN_SoftReset(DEBUG_UART_SRST, 1);

    UART_SetDivisor(DEBUG_UART, APB_BUS_FREQ / 16.0 / 115200); //apbbus: 48M

    UART_SetDataBits(DEBUG_UART, 8);
    UART_SetStopBit(DEBUG_UART, 1);
    UART_EnableTX(DEBUG_UART, 1);
    UART_EnableRX(DEBUG_UART, 1);
    UART_Set2ByteFIFO(DEBUG_UART, 1);

    UART_SetIntEn(DEBUG_UART, 9);
#endif

    s_debugInit = 1;
}

            而管脚定义在文件上边有定义


#define DEBUG_UART                UART2
#define DEBUG_UART_IRQ            UART2_IRQn
#define DEBUG_UART_CLK            CLK_UART2
#define DEBUG_UART_SRST           SRST_UART2

然后就是调用UART库了。
那么我下程序中加入printf就可以串口输出了:
int main(void)
{
        InitDelay();
        InitDebug();
        GPIO_SetDir(MY_LED_PIN, GPIO_OUTPUT);//设置LED引脚为输出
        do
        {
                MY_LED = 0;
                 mdelay(1000);
                MY_LED = 1;
                  mdelay(1000);
                printf("HELLO AC7811");
                 
        }while(1);
       
运行结果如下:
AC7811.jpg

我觉得这个例程是一个从底层做起的工程师写的
请看这个函数:
GPIO_SetFunc(49, 1);
GPIO_SetFunc(50, 1);


我查了下管脚定义:
typedef enum
{
    //GPIOA
    GPIO_PA0 = 0,
    GPIO_PA1,
    GPIO_PA2,
    GPIO_PA3,
    GPIO_PA4,
    GPIO_PA5,
    GPIO_PA6,
    GPIO_PA7,
    GPIO_PA8,
    GPIO_PA9,
    GPIO_PA10,
    GPIO_PA11,
    GPIO_PA12,
    GPIO_PA13,
    GPIO_PA14,
    GPIO_PA15,
    //GPIOB
    GPIO_PB0,        //Pin 16
    GPIO_PB1,
    GPIO_PB2,
    GPIO_PB3,
    GPIO_PB4,
    GPIO_PB5,
    GPIO_PB6,
    GPIO_PB7,
    GPIO_PB8,
    GPIO_PB9,
    GPIO_PB10,
    GPIO_PB11,
    GPIO_PB12,
    GPIO_PB13,
    GPIO_PB14,
    GPIO_PB15,
    //GPIOC
    GPIO_PC0,         //Pin 32
    GPIO_PC1,
    GPIO_PC2,
    GPIO_PC3,
    GPIO_PC4,
    GPIO_PC5,
    GPIO_PC6,
    GPIO_PC7,
    GPIO_PC8,
    GPIO_PC9,
    GPIO_PC10,
    GPIO_PC11,
    GPIO_PC12,
    GPIO_PC13,
    GPIO_PC14,
    GPIO_PC15,
    //GPIOD
    GPIO_PD0,          //Pin 48
    GPIO_PD1,
    GPIO_PD2,
    GPIO_PD3,
    GPIO_PD4,
    GPIO_PD5,
    GPIO_PD6,
    GPIO_PD7,
    GPIO_PD8,
    GPIO_PD9,
    GPIO_PD10,
    GPIO_PD11,
    GPIO_PD12,
    GPIO_PD13,
    GPIO_PD14,
    GPIO_PD15,
    //GPIOE
    GPIO_PE0,          //Pin 64
    GPIO_PE1,
    GPIO_PE2,
    GPIO_PE3,
    GPIO_PE4,
    GPIO_PE5,
    GPIO_PE6,
    GPIO_PE7,
    GPIO_PE8,
    GPIO_PE9,
    GPIO_PE10,
    GPIO_PE11,
    GPIO_PE12,
    GPIO_PE13,
    GPIO_PE14,
    GPIO_PE15,
}GPIO_GroupNum;
数到PD2 PD1正好是49 50而,这位工程师直接就上马了。
如果换我,我就得用GPIO_PD1和GPIO_PD2代替。

使用特权

评论回复

相关帖子

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

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2392

主题

6933

帖子

66

粉丝