我这个人很“懒”,但是爱思考,属于“拿来就用”。
所以我对库很感兴趣,而没有库单凭比特位编程。本人极不赞同也严重鄙视。
有人给你指了个明道,你确偏偏走小道。表示不理解,听说关公就是兵少走小道,让陆逊给拿下的。
居然发现现在有很多人在用寄存器编程。不知是怎么回事?????
言归正传:
其实,AC7811的GPIO例程中就给了串口的初始化函数:
其具体内容如下:
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);
运行结果如下:
我觉得这个例程是一个从底层做起的工程师写的
请看这个函数:
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代替。
|