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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3419|回復: 0
打印 上一主題 下一主題
收起左側

GD32F307開發板串行通訊功能測試

[復制鏈接]
跳轉到指定樓層
樓主
在官網的例程提供了一個串口通信功能的例程,但比較奇葩的是其在硬件方面的設計,由于板上已絲印了GD-Link的提示,故在使用時不會產生歧異;在供電方面,也在切換開關作為標注“DC”和“Link”。然,其虛擬串口的使用就怪異了,居然竟不能使用虛擬串口端的USB來供電,也不能借用GD-Link來形成虛擬串口。其結果就是完成一個簡單的串口通信測試卻要同時使用2條USB線,見圖1所示。
在不了解這些之前,是怎么也鼓搗不出虛擬串口的!

圖1 串口通信測試連接
在鼓搗出虛擬串口后,測試就比較簡單了。將程序編譯下載后,即可見到圖2所示的內容,即每按一下USER用戶鍵,LED1就亮一下,與此同時通過串口也會輸出一個“USART printf example”。
file:///C:/Users/fengqili/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif       
圖2  串口輸出內容
那么其程序是如何設計的呢?
實現要點亮LED1,就需要對其定義和初始化,其初始化函數為:
  1. void led_init(void)
  2. {
  3.     gd_eval_led_init(LED1);
  4. }
復制代碼

而使LED1閃爍的函數則如下:
  1. void led_flash(int times)
  2. {
  3.     int i;
  4.     for(i=0; i<times; i++)
  5.     {
  6. /* delay 400 ms */
  7. delay_1ms(400);
  8. /* turn on LEDs */
  9. gd_eval_led_on(LED1);
  10. /* delay 400 ms */
  11. delay_1ms(400);
  12. /* turn off LEDs */
  13. gd_eval_led_off(LED1);
  14. }
  15. }
復制代碼
也就是說,每隔400毫秒就切換一次狀態。
對于串行通訊來講,則涉及到收與發,在發送時所使用的是經重新定向的printf語句,而接收則是通過fputc函數,其內容如下:
  1. int fputc(int ch, FILE *f)
  2. {
  3. usart_data_transmit(EVAL_COM1, (uint8_t)ch);
  4. while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TBE));
  5. return ch;
  6. }
復制代碼

最后再看一下主程序,功能不多但程序卻寫的很臃腫,其內容如下:
  1. int main(void)
  2. {
  3. /* initialize the LEDs */
  4. led_init();
  5. /* configure systick */
  6. systick_config();
  7. /* flash the LEDs for 1 time */
  8. led_flash(1);
  9. /* configure EVAL_COM1 */
  10. gd_eval_com_init(EVAL_COM1);
  11. /* configure TAMPER key */
  12. gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
  13. /* output a message on hyperterminal using printf function */
  14. printf("\r\n USART printf example: please press the User key \r\n");
  15. /* wait for completion of USART transmission */
  16. while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TC)){
  17. }
  18. while(1)
  19. {
  20. /* check if the user key is pressed */
  21. if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
  22. {
  23. delay_1ms(50);
  24. if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
  25. {
  26. delay_1ms(50);
  27. if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
  28. {
  29. /* turn on LED1 */
  30. gd_eval_led_on(LED1);
  31. /* output a message on hyperterminal using printf function */
  32. printf("\r\n USART printf example \r\n");
  33. /* wait for completion of USART transmission */
  34. while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TC)){
  35. }
  36. }
  37. else
  38. {
  39. /* turn off LED1 */
  40. gd_eval_led_off(LED1);
  41. }
  42. }
  43. else
  44. {
  45. /* turn off LED1 */
  46. gd_eval_led_off(LED1);
  47. }
  48. }
  49. else
  50. {
  51. /* turn off LED1 */
  52. gd_eval_led_off(LED1);
  53. }
  54. }
  55. }
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产激情小视频 | 国产a视频 | 国产97久久 | 欧美一区二区在线 | 精品国产一区二区三区日日嗨 | 国产欧美精品一区二区色综合朱莉 | 成人在线视频一区 | 中文字幕精品一区二区三区精品 | 精品视频一区二区三区在线观看 | 99久久精品免费看国产免费软件 | 亚洲啊v在线 | 欧美日韩高清在线观看 | 中文字幕免费 | 久久亚洲一区二区三区四区 | 国产日韩欧美激情 | 国产亚洲精品综合一区 | 99热热99| 99热.com| 亚洲精品1 | 欧美一区二 | 精品一区二区久久久久久久网站 | 夜夜骑首页 | 日韩视频一区在线观看 | 午夜影院在线观看 | av资源网站 | 亚洲天天干 | 久久精品这里精品 | 亚洲午夜精品一区二区三区他趣 | 涩涩导航| 91社区视频 | 久久av一区二区三区 | 精品粉嫩超白一线天av | 午夜在线小视频 | 久久国产免费看 | 午夜三区 | 激情婷婷 | 农夫在线精品视频免费观看 | 亚州av在线 | 一区二区三区日韩精品 | 久久亚洲欧美日韩精品专区 | 亚洲欧美中文字幕在线观看 |