家電維修班,手機維修班,電腦維修班,電工班,焊工班,液晶電視維修班,電動工具維修班、電動車摩托車維修班、網絡營銷培訓、網站設計培訓、淘寶培訓---全國招生 家電維修班,手機維修班,電腦維修班,電工班,焊工班,液晶電視維修班,電動工具維修班、電動車摩托車維修班、網絡營銷培訓、網站設計培訓、淘寶培訓---全國招生

国产精品久久久久久吹潮-国产精品久久久久久久成人午夜-国产精品久久久久久久久久妇女-国产精品久久久久久久久免费观看-一级看片免费视频-一级看片免费视频囗交

您的位置:網站首頁 > 電器維修資料網 > 正文 >

STM32:玩玩修改串口

★★★★★【文章導讀】:STM32:玩玩修改串口具體內容是:這里的stm32_eval.c,stm32_eval.h文件,以及圖中所示三個文件夾中任意一個文件夾中的部分文件復制到第一個圖所示的文件夾中去,這里我們選擇stm3210e_eval這個文件夾。需要復制的文件是stm3210e_eval.h如同前面一樣…

來源: 日期:2013-12-5 10:33:17 人氣:標簽:

STM32:玩玩修改串口

  這里的stm32_eval.c,stm32_eval.h文件,以及圖中所示三個文件夾中任意一個文件夾中的部分文件復制到第一個圖所示的文件夾中去,這里我們選擇stm3210e_eval這個文件夾。

  2.gif

  需要復制的文件是stm3210e_eval.h

  如同前面一樣建立工程,并且注意修改stm32_eval.h的內容

  

  將//#define use_stm3210e_eval 前的#去掉。

  這樣,就可以編譯并通過文件,用軟件仿真,在usart #1窗口顯示出

  usart printf example: retarget the c library printf function to the usart

  這樣一行字了。

  顯然,對這樣的玩法我是不會滿意的,下面試著去掉與stm32e_eval等相關文件,把這里面需要用到的函數直接復制到main中去,同時,也了解一些串口設置的知識。

  學到這里,多少有點明白了,stm提供的庫為了達到通用性的要求,用了很多的符號來替代常量,然后七轉八拐,有時不知要轉多少個彎才能找到 終對寄存器操作的代碼。這時,keil提供的符號瀏覽就很有用處了。方法是在將光標移到需要查看的符號上面,按下f12即可,通常可以直接跳轉到所需查看到的符號的出處。如下圖

  

  將光標移到usart_baudrate處,按下f12,即跳轉到stm32f10x_uart.h文件中相應的定義處:

  

  如果stm32f10x_uart.h文件沒有打開,那么這個動作會自動打開這個文件。

  下面我們將eval板相關的函數復制到main函數中,以便丟掉與eval板相關的文件。

  (1)打開stm32_eval.h文件,將

  typedef enum

  {

  com1 = 0,

  com2 = 1

  } com_typedef;

  復制到main.c中,這是用來選擇哪一個串口的,因為我的板子上也有2個串口,所以就把它復制過來,也省得對函數作較大的修改了。

  (2)打開stm32_eval.c文件,有一個

  void stm_eval_cominit(com_typedef com, usart_inittypedef* usart_initstruct)

  的函數,是用來初始化端口的,我們把它復制到main.c中,并且把它改名為

  void stm_cominit(com_typedef com, usart_inittypedef* usart_initstruct)

  去掉中間的eval。

  當然,在main函數中調用這個函數的地方也要做相應的修改。

  1.gif

  這個函數中用到了如上圖中藍色框中的一些符號,又是一系列的轉換,用剛才所說的跟蹤方法,找到這些符號的原始出處,作出修改, 后得到的stm_cominit函數如下:

  void stm_cominit(com_typedef com, usart_inittypedef* usart_initstruct)

  {

  gpio_inittypedef gpio_initstructure;

  /* 打開uart所用到的gpio引腳的時鐘*/

  rcc_apb2periphclockcmd(rcc_apb2periph_gpioa | rcc_apb2periph_afio, enable);

  /* 打開uart的時鐘*/

  if (com == com1)

  {

  rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);

  }

  else //com=com2

  {

  rcc_apb1periphclockcmd(rcc_apb1periph_usart2, enable);

  }

  /* 配置tx引腳為推挽式輸出 */

  if(com==com1)

  gpio_initstructure.gpio_pin = gpio_pin_9 ;

  else

  gpio_initstructure.gpio_pin = gpio_pin_2;

  gpio_initstructure.gpio_mode = gpio_mode_af_pp;

  gpio_initstructure.gpio_speed = gpio_speed_50mhz;

  gpio_init(gpioa, &gpio_initstructure);

  /* 配置rx引腳為浮動輸入(高阻?) */

  if(com==com1)

  gpio_initstructure.gpio_pin = gpio_pin_10 ;

  else

  gpio_initstructure.gpio_pin = gpio_pin_3;

  gpio_initstructure.gpio_mode = gpio_mode_in_floating;

  gpio_init(gpioa, &gpio_initstructure);

  /* 串行口配置*/

  if(com==com1)

  usart_init(usart1, usart_initstruct);

  else

  usart_init(usart2, usart_initstruct);

  /* 串口允許*/

  if(com==com1)

  usart_cmd(usart1, enable);

  else

  usart_cmd(usart2, enable);

  }

  至此,修改基本結束,在工程中移去stm32_eval相關的各個文件,在app文件夾中將這些文件刪除,關閉工程,再重新打開工程,編譯通過,運行通過。

下面對上述初始化工作做一些解讀,當然,少不了要數據手冊的幫忙了。

  (1)uart1的時鐘來源和其他串口的時鐘來源不同,uart1的時鐘來源是:apb2,其他串口的時鐘來源:apb1。

  (2)用于uart通信的引腳不會自動配置,需要手工配置。其中用于輸出信號的引腳tx必須配置成為推挽式輸出,而rx引腳則配置成浮動型輸入。

  (3)串口波特率、停止位等參數由庫提供的stm32f10x_usart.c中的

  void usart_init(usart_typedef* usartx, usart_inittypedef* usart_initstruct)

  函數來設定。

  觀察這個函數的執行,可以看到函數通過對cr2寄存器的操作來設定停止位,如下圖藍色框中所示。

  

  通過對cr1寄存器的設定來確定數據位/奇偶校驗位等,這些都只需要找到相應的符號,就能順利地進行設置,找到符號的方法,當然還是上面的按f12瀏覽的方法。

  還有一個重要的工作是波特率的計算,且看這里是如何來做的。

  下面這一段是波特率設置的代碼

  2.gif

  首先根據usartxbase的值來確定需要配置的是usart1還是usart2

  usartxbase = (uint32_t)usartx;

  而usartx是傳入這個函數的一個參數。

  然后據此來得到用于usart的時鐘頻率,這個頻率值被變量apbclock記錄。

  1.gif

  從上面變量的跟蹤可以看到apbclock的值是0x44aa200即72000000,也就是72mhz。

  接下來的一系列計算式就是根據波特率的值來計算應該傳入brr寄存器的值了,偷點懶,這里就不對算式進行一一分析了(我認為暫時沒有這個必要)。

  至此,usart的設置工作完成,即完成了其數據位、停止位、奇偶校驗位、波特率的設置工作。異步通信的配置工作完成。當然,細細分析,可以發現,初始還按默認方式處理了硬件握手等的處理工作。

  除了使用庫函數提供的printf等函數外,我們在單片機開發中還經常使用直接對數據寄存器賦值的方法來使用串口。stm32串口的數據寄存器名為dr,因此,我試著在main函數中寫入這樣一行:

  while1()

  { usart1-》dr=0x55;

  }

  一試成功,軟件仿真時,在串行窗口出現了大串的字符55.

  好了,串口暫時告一段落。


【看看這篇文章在百度的收錄情況】

聯系方式

  • 0731-85579057 , 0731-85569651
  • 點擊這里給我發消息點擊這里給我發消息點擊這里給我發消息
網站欄目導航: 培訓課程 手機硬件 手機軟件 綜合維修 學校資訊 考證指南 就業導航 招生指南 教學管理 入學須知 學校圖片 教學大綱 師資力量 學生感言 學校概況 教學實景 手機維修培訓資訊 電腦維修培訓 維修間故事 手機維修培訓 液晶電視維修培訓 家電維修資料網 電器維修資料網 招生地區 刷機教程 家電維修 手機技巧 老版網站 招生平臺網絡工程
友情鏈接: 監控安裝培訓 電動工具維修 家電維修學校 電工培訓學校 液晶電視維修 焊工培訓學校 電工焊工學校 電腦維修學校 家電維修培訓 電腦維修培訓 家裝電工培訓網絡安裝維護 主板維修 液晶顯示器 筆記本電腦維修 電腦組裝維護 電腦硬件維修 電腦維修 電工考證 電工證 裝修電工 水電工 維修電工 電工 焊接技術 電焊工 焊工 電動設備維修 電動工具維修 制冷維修 空調維修 冰箱維修  更多>>
陽光-手機維修教育品牌學校
點擊這里給我發消息 點擊這里給我發消息 點擊這里給我發消息
電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監控培訓 空調維修培訓 網絡營銷培訓 網站設計培訓 淘寶網店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校 電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監控培訓 空調維修培訓 網絡營銷培訓 網站設計培訓 淘寶網店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校 電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監控培訓 空調維修培訓 網絡營銷培訓 網站設計培訓 淘寶網店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校 電工培訓學校 電動車維修學校 摩托車維修學校 摩托車維修培訓 手機維修培訓 家電維修培訓 電腦維修培訓 電動工具維修培訓 液晶電視維修培訓 安防監控培訓 空調維修培訓 網絡營銷培訓 網站設計培訓 淘寶網店培訓 電器維修培訓 家電維修學校 電工培訓 焊工培訓 電工學校
中山市,固原市,銀川市,玉樹,海東,隴南市,酒泉市,張掖市,天水市,金昌市,蘭州市,榆林市,延安市,渭南市,銅川市,阿里,山南,拉薩市,怒江,文山州,楚雄州,普洱市,昭通市,玉溪市,昆明市,畢節,銅仁,遵義市,貴陽市,甘孜州,資陽市,達州市,宜賓市,南充市,遂寧市,綿陽市,瀘州市,自貢市,三亞市,崇左市,河池市,玉林市,欽州市,梧州市,柳州市,梅州市,肇慶市,湛江市,佛山市,珠海市,韶關市,湘西州,懷化市,郴州市,張家界市,邵陽市,株洲市,仙桃市,隨州市,荊州市,荊門市,襄樊市,黃石市,駐馬店市,信陽市,南陽市,漯河市,中衛市,石嘴山市,海西,海南藏州,黃南州,海北,甘南,慶陽市,平涼市,武威市,白銀市,嘉峪關市,安康市,漢中市,咸陽市,寶雞市,林芝,日喀則,昌都,迪慶,德宏,大理,西雙版納,紅河州,臨滄市,麗江市,保山市,曲靖市,黔東州,黔西州,安順市,六盤水市,涼山州,阿壩州,雅安市,廣安市,眉山市,內江市,廣元市,德陽市,攀枝花市,成都市,海口市,來賓市,百色市,貴港市,北海市,桂林市,南寧市,云浮市,揭陽市,潮州市,清遠市,陽江市,汕尾市,惠州市,茂名市,江門市,汕頭市,深圳市,廣州市,婁底市,永州市,益陽市,岳陽市,湘潭市,長沙市,恩施州,黃岡市,孝感市,鄂州市,十堰市,武漢市,周口市,商丘市,三門峽市,許昌市,焦作市,安陽市,鶴壁市,平頂山市,開封市,鄭州市,聊城市,濱州市,德州市,萊蕪市,日照市,泰安市,煙臺市,濰坊市,東營市,淄博市,上饒市,濟南市,撫州市,宜春市,贛州市,新余市,九江市,景德鎮市,寧德市,南平市,泉州市,莆田市,廈門市,宣城市,亳州市,六安市,宿州市,黃山市,滁州市,安慶市,淮北市,馬鞍山市,蚌埠市,蕪湖市,合肥市,麗水市,舟山市,衢州市,金華市,湖州市,嘉興市,寧波市,宿遷市,鎮江市,鹽城市,連云港市,蘇州市,徐州市,南京市,綏化市,牡丹江市,佳木斯市,大慶市,鶴崗市,哈爾濱市,白城市,白山市,遼源市,吉林市,葫蘆島市,鐵嶺市,盤錦市,阜新市,錦州市,本溪市,鞍山市,沈陽市,錫林郭勒盟,通遼市,烏海市,呂梁市,忻州市,晉中市,晉城市,陽泉市,太原市,廊坊市,承德市,保定市,邯鄲市,唐山市,寧夏,甘肅省,西藏,貴州省,重慶市,廣西,湖南省,河南省,江西省,安徽省,江蘇省,黑龍江省,遼寧省,山西省,天津市,四平市,內蒙古,吳忠市,果洛,西寧市,定西市,商洛市,西安市,那曲,黔南州,巴中市,樂山市,賀州市,防城港市,東莞市,河源市,常德市,衡陽市,咸寧市,宜昌市,濮陽市,新鄉市,洛陽市,菏澤市,臨沂市,威海市,濟寧市,棗莊市,青島市,吉安市,鷹潭市,萍鄉市,南昌市,龍巖市,漳州市,三明市,福州市,池州市,巢湖市,阜陽市,銅陵市,淮南市,臺州市,紹興市,溫州市,杭州市,泰州市,揚州市,淮安市,南通市,常州市,無錫市,大興安嶺,黑河市,七臺河市,伊春市,雙鴨山市,雞西市,齊齊哈爾市,延邊,松原市,通化市,長春市,朝陽市,遼陽市,營口市,丹東市,撫順市,大連市,阿拉善盟,興安盟,烏蘭察布市,巴彥淖爾市,呼倫貝爾市,鄂爾多斯市,赤峰市,包頭市,呼和浩特市,臨汾市,運城市,朔州市,長治市,大同市,衡水市,滄州市,張家口市,邢臺市,秦皇島市,石家莊市,青海省,陜西省,云南省,四川省,海南省,廣東省,湖北省,山東省,福建省,浙江省,上海市,吉林省,河北省,北京市 主站蜘蛛池模板: 国产大片黄| 日韩天堂视频| 拔擦拔擦8x华人免费久久| 图片区小说区av区| 欧美成人福利视频| 农村寡妇野外情一级毛片| 亚洲综合色网站| 亚洲第一免费| 偷偷狠狠的日日日日| 色狠狠综合网| 激情伊人| 欧美首页| 国产精品国产| 亚洲精品午夜国产va久久成人| 国产不卡在线视频| 亚洲视频免费| 欧洲亚洲日本| 国产 字幕 制服 中文 在线| 激情综合欧美| 黄色刺激网站| 国产成人精品在线| 亚洲码专区| 欧美一区日韩精品| 手机在线一区二区三区| 黄色小网站在线观看| 精品国产免费福利片| 色天天综合网色鬼综合| 一级黄色夫妻录像| 精品视频一区二区| 亚洲欧美日本在线观看| 亚洲va欧美va国产| 成人在线第一页| 欧洲成人r片在线观看| 一级理论片免费观看在线| 国产爱v| 日本成人福利| 国产一区亚洲二区三区| 中文字幕一区二区三区5566| 7m福利视频导航精品| 亚洲天堂资源| 曰韩在线视频|