【AT-START-F403A测评】二、对仿真虚拟串口的探索
[复制链接]
在上一个评测时我安装了虚拟串口,当然这是自动安装的,不是我一箱情愿安的,当时我心里就有个问号,我想ATLINK居然能虚拟串口出来,难道能用吗???
我真是小看了ATLINK,经这次的评测,我发现这个串口居然能用唉!
我选的是FLASH读写的那个例程,有的坛友会问干么选FLASH例程?原因是这两天本个用别的32位FLASH想保存个数,娘地不好用。我明天再查查是怎么一回事。
由于心怀鬼胎。所以想试试雅特力的这款板子怎样。
所以这次评测有两大任务,第一个串口好用不?究竟怎么PRINTF的?第二个跑FLASH例程。
首先,FLASH例程:
这个例程是把一些数从RAM中读到FLASH,然后,再读出,再查读的结果对不对,对就亮LED2.
我看了例程居然不用使能FLASH的时钟,也许在初使化时有。但我搜了一下没看到。
我只是在看时钟时吓了一跳。主频240MHz.如果我没有分析错,就是1/240US,也就是240份1US。
我的天,240分之一微秒就一个机器周期了。
例程好用,LED2亮了。
其次,改造一下例程,加个printf函数看看好不好用。
程序极其简单在原程点灯部分加上PASS和NO PASS,结果当然是PASS。
if(Buffercmp(BufferWrite,BufferRead,TEST_BUFEER_SIZE)==PASSED) //Compare the buffer
{
AT32_LEDn_ON(LED2);
AT32_LEDn_OFF(LED3);
printf("%s","PASS");
}
else
{
AT32_LEDn_OFF(LED2);
AT32_LEDn_ON(LED3);
printf("%s","NO PASS");
}
运行结果如下:
那么printf又是怎么好用的呢?
首先得编译器微库打条
其次得PUTCHAR重映射在at32_board.c中
ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/*delay macros*/
#define STEP_DELAY_MS 500
/*AT-START LED resouce array*/
GPIO_Type *LED_GPIO_PORT[LED_NUM] = {LED1_GPIO, LED2_GPIO, LED3_GPIO, LED4_GPIO};
uint16_t LED_GPIO_PIN[LED_NUM] = {LED1_PIN, LED2_PIN, LED3_PIN, LED4_PIN};
uint32_t LED_GPIO_RCC_CLK[LED_NUM] = {LED1_GPIO_RCC_CLK, LED2_GPIO_RCC_CLK, LED3_GPIO_RCC_CLK, LED4_GPIO_RCC_CLK};
/*AT-START Button resouce arry*/
GPIO_Type *BUTTON_GPIO_PORT[BUTTON_NUM] = {BUTTON_WAKEUP_GPIO, BUTTON_USER_KEY_GPIO};
uint16_t BUTTON_GPIO_PIN[BUTTON_NUM] = {BUTTON_WAKEUP_PIN, BUTTON_USER_KEY_PIN};
uint32_t BUTTON_GPIO_RCC_CLK [BUTTON_NUM] = {BUTTON_WAKEUP_RCC_CLK, BUTTON_USER_KEY_RCC_CLK};
/*delay variable*/
static __IO float fac_us;
static __IO float fac_ms;
/**
* [url=home.php?mod=space&uid=159083]@brief[/url] Retargets the C library printf function to the USART.
* @param None
* @retval None
*/
PUTCHAR_PROTOTYPE
{
USART_SendData(AT32_PRINT_UART, ch);
while ( USART_GetFlagStatus(AT32_PRINT_UART, USART_FLAG_TRAC) == RESET );
return ch;
}
第三步就是UART初始化
这里是初始化串口一。
好了,今天评测就到这儿了。让我感到意外的是这块板子,下载程序格外地快。不知是哪里优化了,还是F4就是这么快.
|