日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明))

發(fā)布時間:2023/12/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明)) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

?

1 c語言與匯編語言器

2 配置SCI寄存器

2.1 了解SCI寄存器

2.2 使用位定義的方法定義寄存器

2.2.1 位域

2.2.2 聲明共同體

2.2.3 結(jié)構(gòu)體

2.2.4 查看寄存器的值

2.3 寄存器文件空間分配


本節(jié)內(nèi)容看懂之后主要是頭文件程序的解析。

?

1 c語言與匯編語言器

一些對時間要求特別高的時候需要嵌入一些匯編語言,其他時候使用c語言通過位定義和寄存器結(jié)構(gòu)體的方式來實現(xiàn)對dsp寄存器進行訪問和控制。

2 配置SCI寄存器

2.1 了解SCI寄存器

前面我們講過2812有兩個SCI寄存器(SCIA和SCIB),可以做成兩個串口(2RS232/2RS484/RS232+RS485)

  • 首先我們查看寄存器的寄存器文件

以SCIA為例,第一列表示他有13個寄存器可以操作,并且都以SCI開頭進行命名;第二列表示地址,即該寄存器所在的位置;后面的占用空間表示這個地址內(nèi)的數(shù)據(jù)寬度,通過更改這些寄存器的數(shù)據(jù)就可以改變相應寄存器的功能。注意寄存器地址非連續(xù),有缺失值。

2.2 使用位定義的方法定義寄存器

2.2.1 位域

定義:一個字節(jié)中的二進制位劃分為幾個不同的區(qū)域,并說明每個區(qū)域的位數(shù)。

語法結(jié)構(gòu)如下所示

注意:語法最后有分號。

注意:

1 位域聲明順序從右到左

2 位域的定義不能橫跨字節(jié)

若例6-1,中a長度為5,b為3,則定義錯誤,在此情況下b要橫跨兩個字節(jié)

3 位域不能大于8個字節(jié),否則與前面第二條沖突

4 可以沒有域名,此時的作用是調(diào)整字節(jié)的順序。如下所示

注意:保留位也需要定義。

具體位域分區(qū)如下所述:

2.2.2 聲明共同體

作用:有時候需要對整個寄存器進行操作,這時通過聲明共同體來進行操作;既可以對整體進行操作,也可以按位進行操作。

定義:

結(jié)構(gòu)體和共同體的區(qū)別:

結(jié)構(gòu)體分配空間按所有成員占據(jù)的總和來分配;

共同體的空間是共用的,如例6-3中:unit16與bit共用的是一段空間,在一個時間只有一個共同體使用。

2.2.3 結(jié)構(gòu)體

SCI中包含了很多寄存器,為了方便管理,在dsp中通過結(jié)構(gòu)體的方法來實現(xiàn)。

注意:

結(jié)構(gòu)體當中有很多union共同體,既可以整體對寄存器進行操作,也可以對寄存器進行位操作;但unit16類型的只能進行寄存器操作。

保留項也被定義了,用rsvd代替,但沒有用處。

在定義結(jié)構(gòu)體之后,需要聲明SciaRegsScibRegs,表示scia與scib寄存器;關(guān)鍵字extern代表全局變量;volatile表示寄存器的值易變,可以被外部硬件和外部代碼改變,但如果沒有這個關(guān)鍵字,則該寄存器的值只能被程序代碼改變。

函數(shù)調(diào)用:

代碼分析:

SciaRegs.SCICCR.bit.STOPBITS

首先SciaRegs.SCICCR這一段代碼是結(jié)構(gòu)體定義的,

找SCICCR的聲明

下一位SciaRegs.SCICCR.bit,從函數(shù)聲明處得知函數(shù)原來應該是SCICCR_REG,在共同體中存在的下一位bit,他是位域定義,找他的聲明處

順藤摸瓜也就找到了SciaRegs.SCICCR.bit.STOPBITS寄存器

union共同體,既可以整體對寄存器進行操作(.all),也可以對寄存器進行位操作(.bit);但unit16類型的只能進行寄存器操作,如下所示:

2.2.4 查看寄存器的值

2.3 寄存器文件空間分配

why:代表寄存器的變量如何與物理寄存器結(jié)合起來的?

總結(jié)

以上是生活随笔為你收集整理的小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明))的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。