標題: GD32F307開發(fā)板串行通訊功能測試 [打印本頁]
作者: jinglixixi 時間: 2020-11-9 22:32
標題: GD32F307開發(fā)板串行通訊功能測試
在官網(wǎng)的例程提供了一個串口通信功能的例程,但比較奇葩的是其在硬件方面的設(shè)計,由于板上已絲印了GD-Link的提示,故在使用時不會產(chǎn)生歧異;在供電方面,也在切換開關(guān)作為標注“DC”和“Link”。然,其虛擬串口的使用就怪異了,居然竟不能使用虛擬串口端的USB來供電,也不能借用GD-Link來形成虛擬串口。其結(jié)果就是完成一個簡單的串口通信測試卻要同時使用2條USB線,見圖1所示。
在不了解這些之前,是怎么也鼓搗不出虛擬串口的!
1.jpg (31.32 KB, 下載次數(shù): 89)
下載附件
2020-11-9 22:30 上傳
圖1 串口通信測試連接
在鼓搗出虛擬串口后,測試就比較簡單了。將程序編譯下載后,即可見到圖2所示的內(nèi)容,即每按一下USER用戶鍵,LED1就亮一下,與此同時通過串口也會輸出一個“USART printf example”。
file:///C:/Users/fengqili/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif
2.jpg (36.75 KB, 下載次數(shù): 80)
下載附件
2020-11-9 22:30 上傳
圖2 串口輸出內(nèi)容
那么其程序是如何設(shè)計的呢?
實現(xiàn)要點亮LED1,就需要對其定義和初始化,其初始化函數(shù)為:
- void led_init(void)
- {
- gd_eval_led_init(LED1);
- }
復(fù)制代碼
而使LED1閃爍的函數(shù)則如下:
- void led_flash(int times)
- {
- int i;
- for(i=0; i<times; i++)
- {
- /* delay 400 ms */
- delay_1ms(400);
- /* turn on LEDs */
- gd_eval_led_on(LED1);
- /* delay 400 ms */
- delay_1ms(400);
- /* turn off LEDs */
- gd_eval_led_off(LED1);
- }
- }
復(fù)制代碼
也就是說,每隔400毫秒就切換一次狀態(tài)。
對于串行通訊來講,則涉及到收與發(fā),在發(fā)送時所使用的是經(jīng)重新定向的printf語句,而接收則是通過fputc函數(shù),其內(nèi)容如下:
- int fputc(int ch, FILE *f)
- {
- usart_data_transmit(EVAL_COM1, (uint8_t)ch);
- while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TBE));
- return ch;
- }
復(fù)制代碼
最后再看一下主程序,功能不多但程序卻寫的很臃腫,其內(nèi)容如下:
- int main(void)
- {
- /* initialize the LEDs */
- led_init();
- /* configure systick */
- systick_config();
- /* flash the LEDs for 1 time */
- led_flash(1);
- /* configure EVAL_COM1 */
- gd_eval_com_init(EVAL_COM1);
- /* configure TAMPER key */
- gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
- /* output a message on hyperterminal using printf function */
- printf("\r\n USART printf example: please press the User key \r\n");
- /* wait for completion of USART transmission */
- while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TC)){
- }
- while(1)
- {
- /* check if the user key is pressed */
- if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
- {
- delay_1ms(50);
- if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
- {
- delay_1ms(50);
- if(RESET == gd_eval_key_state_get(KEY_WAKEUP))
- {
- /* turn on LED1 */
- gd_eval_led_on(LED1);
- /* output a message on hyperterminal using printf function */
- printf("\r\n USART printf example \r\n");
- /* wait for completion of USART transmission */
- while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TC)){
- }
- }
- else
- {
- /* turn off LED1 */
- gd_eval_led_off(LED1);
- }
- }
- else
- {
- /* turn off LED1 */
- gd_eval_led_off(LED1);
- }
- }
- else
- {
- /* turn off LED1 */
- gd_eval_led_off(LED1);
- }
- }
- }
復(fù)制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
国产精品国产精品国产专区不片
|
日韩国产一区二区三区
|
国产精品18hdxxxⅹ在线
|
久久久久久久一区
|
在线观看中文字幕
|
精品国产一区二区三区性色
|
中文字幕第一页在线
|
欧美日日|
欧美日韩美女
|
久久国产精品视频
|
中文字幕精品一区
|
国产日韩精品视频
|
自拍偷拍亚洲欧美
|
日韩成人免费av
|
欧美日韩国产在线观看
|
成人免费网站视频
|
伊人网站在线观看
|
黄色成人av
|
成人亚洲片
|
午夜影视网
|
欧美一二三|
日韩欧美高清dvd碟片
|
久久久久免费精品国产小说色大师
|
欧美久久免费观看
|
一区二区三区国产
|
亚洲毛片在线
|
美女视频黄色片
|
97国产一区二区精品久久呦
|
国产男女视频网站
|
国产精品日韩欧美一区二区三区
|
中文字幕在线看第二
|
日韩在线播放网址
|
亚洲日日操
|
亚洲乱码一区二区三区在线观看
|
大学生a级毛片免费视频
|
亚洲精品国产a久久久久久
中文字幕一区二区三区四区五区
|
av夜夜操
|
理论片午午伦夜理片影院
|
日韩成人免费视频
|
免费一看一级毛片
|
欧美综合一区
|