第一篇:“新時代的人民法典”學習心得筆記
“新時代的人民法典”學習心得筆記
由于內容太過豐富,難以寫出全部體會,現僅就有關《民法典》方面,深刻領會老師的講課精神,再談些心得體會。
一、民法典的內容:《中華人民共和國民法典》被稱為“社會生活的百科全書”,是新中國第一部以法典命名的法律,在法律體系中居于基礎性地位,也是市場經濟的基本法。《中華人民共和國民法典》共7編、1260條,各編依次為總則、物權、合同、人格權、婚姻家庭、繼承、侵權責任,以及附則。
2020年5月28日,十三屆全國人大三次會議表決通過了《中華人民共和國民法典》,自2021年1月1日起施行。婚姻法、繼承法、民法通則、收養法、擔保法、合同法、物權法、侵權責任法、民法總則同時廢止。
二、了解了王晨副委員長關于民法典草案的說明:黃瑞老師在講課中說,編纂民法典一是以習近平同志為核心的黨中央作出的重大法治建設部署;二是堅持和完善中國特色社會主義制度的現實需要;三是推進全面依法治國、推進國家治理體系和治理能力現代化的重大舉措;四是堅持和完善社會主義基本經濟制度、推動經濟高質量發展的客觀要求;五是增進人民福祉、維護最廣大人民根本利益的必然要求。因此,編纂民法典的重大而深遠的意義就很明確了。編纂民法典采取“兩步走”的工作思路進行:第一步,制定民法總則,作為民法典的總則編;第二步,編纂民法典各分編,再與民法總則合并為一部完整的民法典草案。
三、編纂民法典的指導思想是:緊緊圍繞建設中國特色社會主義法治體系、建設社會主義法治國家,總結實踐經驗,適應時代要求,對我國現行的、制定于不同時期的民法通則、物權法、合同法、擔保法、婚姻法、收養法、繼承法、侵權責任法和人格權方面的民事法律規范進行全面系統的編訂纂修,形成一部具有中國特色、體現時代特點、反映人民意愿的民法典,為新時代堅持和完善中國特色社會主義制度、實現“兩個一百年”奮斗目標、實現中華民族偉大復興中國夢提供完備的民事法治保障。
四、編纂民法典的基本原則:一是堅持正確政治方向,二是堅持以人民為中心,三是堅持立足國情和實際;四是堅持依法治國與以德治國相結合,五是堅持科學立法、民主立法、依法立法,五、5.29日中央政治局集體學習:習近平總書記強調“充分認識頒布實施民法典重大意義,依法更好保障人民合法權益”說明黨中央對切實實施民法典十分重視,我們必須好好學習,好好執行。
六、我的體會:
1、民法典是新中國第一部以法典命名的法律,開創了我國法典編纂立法的先河,具有里程碑意義;
2、民法典以人為本更好維護人民權益,人民群眾維護自身權益,有法可依,更加有了安全感。
3、民法典內容廣泛,涉及到人民群眾的方方面面,可以說碰到任何問題都可找民法典解決,這真是我們的福氣啊!
第二篇:《人民教育》學習心得
從“影響力教師”袁濱渤身上學到的——讀《人民教育》心得體會
實小北院李寧
回顧自己最近閱讀過的《人民教育》系列刊物,“袁濱渤”這個名字首先映入腦海,這位“影響力教師”身上有許多值得我學習的地方,她的事跡,沒有驚天動地的故事,只有平平凡凡普普通通的工作印記,卻留給我意味深長的思考。
袁老師以“筆談”出名,她所教的學生一屆比一屆“厲害”,她的學生走向社會后,無論成為“精英”,還是“平民”,身上都有她的影子,那就是“會生活、有尊嚴、有擔當”,由此可見,老師對學生的影響是深遠的、是潛移默化的。想成為她這樣的老師,以下兩點是相當重要的:
感想一:教育要有心
其實在從教之初,任何人都會犯大大小小的錯誤,難能可貴的是,有心的袁老師能夠從細小的事件中發現教育的載體和契機,從而改變了自己“滅火”隊員的尷尬境遇。
回想自己的教學經歷,確實忽略了一些教育契機。但隨著教學經驗的積累,我也逐漸學會了從小事尋找教育點。學生上課、升旗時怕冷要戴手套、帽子,這其實是十分不禮貌的行為,因此我在公開課上、在升旗時提醒學生注意;在校園范圍內見到碎紙屑,有些學生看不是自己班的衛生區就不管不顧,這時我會提醒學生不要有私心和功利心,愛護環境不分衛生區。
感想二:教育要堅守
平凡的事做好,就是不平凡;簡單的事做好,就是不簡單,教育同樣貴在堅守。在這個信息迅猛發展的時代,袁老師能不為外界所影響,將自己的“筆談”堅持15年,足見她的耐心和恒心,這種堅守不只是行為,而是一種品質,一種胸懷,一種境界。
記得剛開始從教時,我想通過家訪架起家校溝通的橋梁,但是良好的初心并沒有取得預想的結果,這和沒有堅持執行有很大關系。剛執教二年級時,班上有幾個轉學生的生字寫得很差,甚至有些連捺和撇的方向都分不清,我在開學初下決心要監督他們每天練十個字,剛開始堅持得挺好,可隨著教學進度深入,我疏
于督促他們,結果并沒有達到我的預期效果。堅守,需要耐心和恒心,這是我需要好好學習的。
“教育”一詞的含義,可以很復雜,也可以很簡單,復雜到從古至今有無數教育家來撰文論述,簡單到可以用兩個詞來概括——“愛心”和“恒心”,有愛心就會用心、善思、求變;有恒心就會堅持、執著、無懼。作為一名年輕的教育工作者,如何修煉這兩顆心是我需要長久研究的課題。
第三篇:新時代人民幸福調查問卷
改革開放以來,隨著人民生活水平的改善,特別是中國近幾年在經濟方面取得的巨大成就,讓我們不再為衣食發愁,越來越多的人把提高生活質量作為滿足生活需求之后的進一步追求。國民幸福指數(NHI)在繼GDP之后被國際組織列入了一個衡量國家綜合實力的重要指標。百姓的幸福指數可以監控經濟社會運行的整體態勢,也可以反映并進一步提民眾的生活滿意度。它更是反映社會運行狀況和民眾生活狀態的風向標。
21世紀的人們是幸福的,隨著科技水平的提高,人們的物質世界和精神世界都有了很大程度的提升,普通百姓也開始享受智能化的生活,生活變得越來越便利。但21世紀的人們也處于危機之中,放假的不斷攀升,物價的不斷上漲,食品安全問題被頻頻曝光,以及貧富差距問題等開始出現在人們的腦海里,每個人似乎都上滿了發條,疲于奔命。
現如今,全國最具幸福感城市的排名依據居住環境、醫療水平、投資環境、貪腐現象、,醫療水平、教育水平、社會治安、百姓福利、生活成本、交通狀況、就業機會、婚姻滿意度等11項指標。
調查目的:通過居住地的生活環境,生活水平,百姓福利,教育水平,就業機會和閑暇時間的調查,了解黃島目前的幸福狀況,并了解哪些影響了居民幸福感并探究如何進行改善來增強黃島的幸福感。
網絡問卷人數190人。
性別:
宗教信仰
出行的交通工具
月平均收入
月工作天數
第四篇:STM32學習心得筆記
STM32學習心得筆記
時鐘篇
在STM32中,有五個時鐘源,為HSI、HSE、LSI、LSE、PLL。
①、HSI是高速內部時鐘,RC振蕩器,頻率為8MHz。
②、HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。
③、LSI是低速內部時鐘,RC振蕩器,頻率為40kHz。
④、LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。
⑤、PLL為鎖相環倍頻 輸出,其時鐘 輸入 源可選擇為HSI/
2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
其中40kHz的LSI供獨立看門狗IWDG使用,另外它還可以被選擇為實時時鐘RTC的時鐘源。另外,實時時鐘RTC的時鐘源還可以選擇LSE,或者是HSE的128分頻。RTC的時鐘源通過RTCSEL[1:0]來選擇。
STM32中有一個全速 功能 的 USB 模塊,其串行 接口 引擎需要一個頻率為48MHz的時鐘源。該時鐘源只能
從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當需要使用USB模塊時,PLL必須使能,并且時鐘頻率配置為48MHz或72MHz。
另外,STM32還可以選擇一個時鐘 信號 輸出到MCO腳(PA8)上,可以選擇為PLL輸出的2分頻、HSI、HSE、或者 系統 時鐘。
系統時鐘SYSCLK,它是供STM32中絕大部分部件工作的時鐘源。系統時鐘可選擇為PLL輸出、HSI或者HSE。系統時鐘最
大頻率為72MHz,它通過AHB分頻器分頻后送給各模塊使用,AHB分頻器可選擇1、2、4、8、16、64、128、256、512分
頻。其中AHB分頻器輸出的時鐘送給5大模塊使用:
①、送給AHB 總線、內核、內存和DMA使用的HCLK時鐘。
②、通過8分頻后送給Cortex的系統 定時器 時鐘。
③、直接送給Cortex的空閑運行時鐘FCLK。
④、送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給定時器(Timer)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器2、3、4使用。
⑤、送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給定時器(Timer)1倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器1使用。另外,APB2分頻器還有
一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。
在以上的時鐘輸出中,有很多是帶使能控制的,例如AHB總線時鐘、內核時鐘、各種APB1外設、APB2外設等等。當需要使
用某模塊時,記得一定要先使能對應的時鐘。
需要注意的是定時器的倍頻器,當APB的分頻為1時,它的倍頻值為1,否則它的倍頻值就為2。
連接在APB1(低速外設)上的 設備 有: 電源 接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、Timer2、Timer3、Timer4。注意USB模塊雖然需要一個單獨的48MHz時鐘信號,但它應該不是供USB模塊工作的時鐘,而只
是提供給串行接口引擎(SIE)使用的時鐘。USB模塊工作的時鐘應該是由APB1提供的。
連接在APB2(高速外設)上的設備有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。
下圖是STM32用戶手冊中的時鐘系統結構圖,通過該圖可以從總體上掌握STM32的時鐘系統。
管腳篇
我們操作STM32過程中對管腳的操作是比較頻繁的工作之一,我們一般用提供的封裝庫來進行操作,因為它直觀方便。我們常用的有:
GPIO_SetBits();GPIO_Writebit();GPIO_ResetBits();GPIO_ReadInputBit();GPIO_ReadOutputBit();等等
它們具體怎么操作的我們是不用管的給我們一個接口就足夠了,但是想學好STM32下一步最好使用它的原子操作,下面我們先學習一
下關于管腳端口的一些寄存器。由于上述命令操作是調用的一些函數故可能在調用的過程中可能被中斷所打斷產和 想不到的后果
但是如果調用寄存器函可以在一個時鐘周期內完成,所以在一些關鍵的場合要使用對原子的直接訪問。要用到的寄存器有置位復位
寄存器GPIOx_BSRR和復位寄存器GPIOx_BRR,后者是前者的一個子功能,GPIOx_BSRR包括置和復位二功功能高16位是復位功能低16位
是置位功能,高16位中對應位置1表示要復位這一管腳其它寫入0的位不改變原有的電平,而低16位置1是真的要使其位輸出置1。
對于GPIOx_BRR寄存器寫入對應位1時表示要復位輸出這一管腳,復位時用哪個寄存器隨你便好了,但是要使其置1時只能使用GPIOx_BSRR 了。說到這里你可能要說了:GPIOx_ODR不可以嘛?是真的可以,但是這里的輸出0和1都是要反映到管腳是的,對于我們僅需要操作1個
管腳時還要兼顧其它不需要改變的PIN,所以我們最好不要用這個寄存器來進行直接的操作。常用的幾個寄存器:
上面的二個寄存器是設置寄存器的是輸入還是輸出,輸入中包括模擬輸入、上拉/下拉輸入、還是懸空輸入。輸出包括:
推挽輸出、開漏輸出、復用推挽輸出、復用開漏輸出。這個一個在程序初始化時要做的工作,利用封裝的函數還是挺好的
這點要是利用寄存器操作就劃不來了。
讀取端口管腳就是讀取
ch = GPIOx->IDR;就是這么簡單。
就是把一個16位的管腳值送給這個寄存器如: GPIOx->ODR=ch,如果中改變其中一管腳原來的不變,置1時沒有問題可以這樣做
GPIOx->ODR |=1< 到目的。用GPIOx->BRR=0x00008000方便些。前面的0x00008000只第15腳而已。 下面貼出復位/置位寄存器和復位寄存器來不說了。 下面通過宏定方,使控制GPIO來的更加方便 #define BITBAND(addr bitnum)((addr & 0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2)) #define MEM_ADDR(addr)*((volatile unsigned long *)(addr)) #define BIT_ADDR(addr bitnum)MEM_ADDR(BITBAND(addr bitnum))//IO #define GPIOA_ODR_Addr(GPIOA_BASE+12)//0x4001080C #define GPIOB_ODR_Addr(GPIOB_BASE+12)//0x40010C0C #define GPIOC_ODR_Addr(GPIOC_BASE+12)//0x4001100C #define GPIOD_ODR_Addr(GPIOD_BASE+12)//0x4001140C #define GPIOE_ODR_Addr(GPIOE_BASE+12)//0x4001180C #define GPIOF_ODR_Addr(GPIOF_BASE+12)//0x40011A0C #define GPIOG_ODR_Addr(GPIOG_BASE+12)//0x40011E0C #define GPIOA_IDR_Addr(GPIOA_BASE+8)//0x40010808 #define GPIOB_IDR_Addr(GPIOB_BASE+8)//0x40010C08 #define GPIOC_IDR_Addr(GPIOC_BASE+8)//0x40011008 #define GPIOD_IDR_Addr(GPIOD_BASE+8)//0x40011408 #define GPIOE_IDR_Addr(GPIOE_BASE+8)//0x40011808 #define GPIOF_IDR_Addr(GPIOF_BASE+8)//0x40011A08 #define GPIOG_IDR_Addr(GPIOG_BASE+8)//0x40011E08 //IO IO!//n 16!#define PAout(n)BIT_ADDR(GPIOA_ODR_Addrn)// #define PAin(n)BIT_ADDR(GPIOA_IDR_Addrn)// #define PBout(n)BIT_ADDR(GPIOB_ODR_Addrn)// #define PBin(n)BIT_ADDR(GPIOB_IDR_Addrn)// #define PCout(n)BIT_ADDR(GPIOC_ODR_Addrn)// #define PCin(n)BIT_ADDR(GPIOC_IDR_Addrn)// #define PDout(n)BIT_ADDR(GPIOD_ODR_Addrn)// #define PDin(n)BIT_ADDR(GPIOD_IDR_Addrn)// #define PEout(n)BIT_ADDR(GPIOE_ODR_Addrn)// #define PEin(n)BIT_ADDR(GPIOE_IDR_Addrn)// #define PFout(n)BIT_ADDR(GPIOF_ODR_Addrn)// #define PFin(n)BIT_ADDR(GPIOF_IDR_Addrn)// #define PGout(n)BIT_ADDR(GPIOG_ODR_Addrn)// #define PGin(n)BIT_ADDR(GPIOG_IDR_Addrn)// #define led0=PAout(8) 使用時可以 led0=0;或者 led0=1;像不像51中的控制。這樣led0就可以像51系統中那樣控制某一管腳的高低了,是不是很方便。這是比前面的應用 的方便性上更加進了一步,只是前面要做一些提前的預備工作了。 中斷和核心的系統控制部分 typedef struct { vuc32 CPUID;//CM3 vu32 ICSR;// vu32 VTOR;// vu32 AIRCR;// vu32 SCR;// vu32 CCR;// vu32 SHPR[3];// vu32 SHCSR;// Handler vu32 CFSR;//MFSR+BFSR+UFSR vu32 HFSR;// fault vu32 DFSR;// fault vu32 MMFAR;// vu32 BFAR;// fault vu32 AFSR;// fault } SCB_TypeDef; 全局中斷禁止和允許 在51系統中都有全局中斷允許/禁止位,那在Cortex-M3中這個位在哪呢? 這的水很深,請看在Core_m3.h中有 static __INLINE void __enable_irq(){ __ASM volatile(“cpsie i”);} static __INLINE void __disable_irq(){ __ASM volatile(“cpsid i”);} static __INLINE void __enable_fault_irq(){ __ASM volatile(“cpsie f”);} static __INLINE void __disable_fault_irq(){ __ASM volatile(“cpsid f”);} static __INLINE void __NOP(){ __ASM volatile(“nop”);} static __INLINE void __WFI(){ __ASM volatile(“wfi”);} static __INLINE void __WFE(){ __ASM volatile(“wfe”);} static __INLINE void __SEV(){ __ASM volatile(“sev”);} static __INLINE void __ISB(){ __ASM volatile(“isb”);} static __INLINE void __DSB(){ __ASM volatile(“dsb”);} static __INLINE void __DMB(){ __ASM volatile(“dmb”);} static __INLINE void __CLREX(){ __ASM volatile(“clrex”);} 使用前二條__enable_irq();__disable_irq()就可以打開和關閉所有的中斷了,這是在庫版本在V3.0以上的情況。而對于V2.0則要用 NVIC_SETFAULTMASK(); //關閉總中斷 NVIC_RESETFAULTMASK();//開放總中斷 來實現了。 DSP學習心得筆記 ----------------白建成.baijc.icekoor 建立新工程過程中: 問題1: “GPIO_Study.c”, line 61: fatal error: could not open source file “DSP280x_Device.h” 1 fatal error detected in the compilation of “GPIO_Study.c”.解決方法: 因為project ?build options?compiler?preprocessor中,要包含的頭文件的地址沒有加進去,你可以找到頭文件的地址,然后加進去。 問題2: undefined first referenced symbol in file--------- ----------------_c_int00 D:DSP studytest3DebugDSP280x_CodeStartBranch.obj FS$$MPY D:DSP studytest3DebugDSP280x_CpuTimers.obj FS$$TOL D:DSP studytest3DebugDSP280x_CpuTimers.obj >> error: symbol referencing errors'./Debug/GPIO_Study.out' not built 解決辦法都是下面: 這個問題是因為沒有加在庫文件,請在project ?build options?linker?libraries中加入rts2800.lib。 問題3: >> warning: creating.stack section with default size of 400(hex)words.Use -stack option to change the default size.>> error: can't allocate.stack, size 00000400(page 1)in RAMM1(avail: 00000380)>> error: errors in input-./Debug/GPIO_Study.out not built 解決辦法: 這個問題是關于堆棧存儲大小的問題,他是說,創建堆棧段使用與設置400個字,并建議在“堆棧操作”中改變這個與設置。這時,需要進行如下修改就可通過:project? build options?Linker?basic,在Stack Size(-stack):填入800或者其他小于1024的數值。 調試程序: 在編譯完成之后,要來下載程序并進行功能調試。File?Load Program,在工程文件夾下面的Debug文件夾下,選中**.out文件,點擊打開,便開始下載程序了。將**.out文件下載到目標板上2812的RAM中。 注意,這里是調試,所以將程序下載到RAM。等到最后您要固化程序的時候,就得下載到FLASH了,因為斷電之后,RAM里面所有的數據都會消失。 (Run和Animate的區別,Run是如果遇到斷點的話它就停下來了。而Animate就算遇到斷點時先停止DSP內核,刷新窗口,然后接著繼續啟動運行,常用來連續刷新變量窗口和生成graph圖形等)——知識儲備。 添加斷點: 加上斷點的方法很簡單,只要在該行代碼前雙擊就行。雙擊之后,這行代碼前面會出現一個紅色圓塊。另外一種添加斷點的方法,就是在剛才的編譯工具欄上,點一下那個小手圖形的按鈕,前提是你要把光標移動到想要設置斷點的哪一行上。 使用watch window: Watch window的作用是來觀察程序運行過程中的各個變量的值。調用watch window的方法是點擊菜單欄的“View ”,“watch window”,這時watch window就會顯示在CCS下方的信息區域; 選中所要觀察的變量,然后右鍵,在右鍵菜單中選擇add to watch window。 調試代碼觀察: 我們在調試程序的時候經常想讓程序從Main函數開使運行,點Debug?Go main。既能看到源文件中代碼的執行情況,又能看到匯編指令的執行情況View?Mixed Source/Asm; 關于F2812中用C語言來實現中斷的說明 1.首先在.cmd中定位系統中斷表: MEMORY { PAGE 0 : ......................................PAGE 1 : ......................................PIE_VECT : origin = 0x000D00, length = 0x000100......................................} SECTIONS {...................................PieVectTable : > PIE_VECT,PAGE = 1.....................................} 2.在C中制定該中斷的結構體: #pragma DATA_SECTION(PieVectTable,“PieVectTable”);struct PIE_VECT_TABLE PieVectTable;(在DSP28_GlobalVariableDefs.C中初始化)3.用一組常數(按照中斷向量的順序)初始化該名字為PIE_VECT_TABLE的表: typedef interrupt void(*PINT)(void);這里有些一問,一下應該為函數名?? // Define Vector Table: struct PIE_VECT_TABLE { // Reset is never fetched from this table.// It will always be fetched from 0x3FFFC0 in either // boot ROM or XINTF Zone 7 depending on the state of // the XMP/MC input signal.On the F2810 it is always // fetched from boot ROM.PINT PIE1_RESERVED; PINT PIE2_RESERVED; PINT PIE3_RESERVED; PINT PIE4_RESERVED; PINT PIE5_RESERVED; PINT PIE6_RESERVED; PINT PIE7_RESERVED; PINT PIE8_RESERVED; PINT PIE9_RESERVED; PINT PIE10_RESERVED; PINT PIE11_RESERVED; PINT PIE12_RESERVED; PINT PIE13_RESERVED; // Non-Peripheral Interrupts: PINT XINT13; // XINT13 PINT TINT2; // CPU-Timer2 PINT DATALOG; // Datalogging interrupt PINT RTOSINT; // RTOS interrupt PINT EMUINT; // Emulation interrupt PINT XNMI; // Non-maskable interrupt PINT ILLEGAL; // Illegal operation TRAP PINT USER0; // User Defined trap 0 PINT USER1; // User Defined trap 1 PINT USER2; // User Defined trap 2 PINT USER3; // User Defined trap 3 PINT USER4; // User Defined trap 4 PINT USER5; // User Defined trap 5 PINT USER6; // User Defined trap 6 PINT USER7; // User Defined trap 7 PINT USER8; // User Defined trap 8 PINT USER9; // User Defined trap 9 PINT USER10; // User Defined trap 10 PINT USER11; // User Defined trap 11 // Group 1 PIE Peripheral Vectors: PINT PDPINTA; // EV-A PINT PDPINTB; // EV-B PINT rsvd1_3; PINT XINT1; PINT XINT2; PINT ADCINT; // ADC PINT TINT0; // Timer 0 PINT WAKEINT; // WD ..........................// Group 12 PIE Peripheral Vectors: PINT rsvd12_1; PINT rsvd12_2; PINT rsvd12_3; PINT rsvd12_4; PINT rsvd12_5; PINT rsvd12_6; PINT rsvd12_7; PINT rsvd12_8;};然后在使我們在.cmd文件中定義的表有以上屬性: extern struct PIE_VECT_TABLE PieVectTable;(在.h文件中)4.初始化該表(在.c文件中)使之能夠為主程序所使用: const struct PIE_VECT_TABLE PieVectTableInit = { PIE_RESERVED, // Reserved space PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,// Non-Peripheral Interrupts INT13_ISR,// XINT13 or CPU-Timer 1 INT14_ISR,// CPU-Timer2 DATALOG_ISR,// Datalogging interrupt RTOSINT_ISR,// RTOS interrupt EMUINT_ISR,// Emulation interrupt NMI_ISR,// Non-maskable interrupt ILLEGAL_ISR,// Illegal operation TRAP USER0_ISR,// User Defined trap 0 USER1_ISR,// User Defined trap 1 USER2_ISR,// User Defined trap 2 USER3_ISR,// User Defined trap 3 USER4_ISR,// User Defined trap 4 USER5_ISR,// User Defined trap 5 USER6_ISR,// User Defined trap 6 USER7_ISR,// User Defined trap 7 USER8_ISR,// User Defined trap 8 USER9_ISR,// User Defined trap 9 USER10_ISR,// User Defined trap 10 USER11_ISR,// User Defined trap 11 // Group 1 PIE Vectors PDPINTA_ISR,// EV-A PDPINTB_ISR,// EV-B rsvd_ISR,XINT1_ISR,XINT2_ISR,ADCINT_ISR,// ADC TINT0_ISR,// Timer 0 WAKEINT_ISR,// WD..........................// Group 12 E Vectors rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,};//-------------// InitPieVectTable: //-------------// This function initializes the PIE vector table to a known state.// This function must be executed after boot time.// void InitPieVectTable(void){ int16 i;Uint32 *Source =(void *)&PieVectTableInit;Uint32 *Dest =(void *)&PieVectTable; EALLOW; for(i=0;i < 128;i++)*Dest++ = *Source++;EDIS; // Enable the PIE Vector Table PieCtrl.PIECRTL.bit.ENPIE = 1; } 5.中斷服務程序: 讓以上的數值指向你所要的服務程序,例如: PieVectTable.TINT2 = &ISRTimer2;那么,ISRTimer2也就成了中斷服務程序,×××切記:一定要在主程序的開始先聲明該程序: interrupt void ISRTimer2(void); ..........................然后按照您的需要編制該程序: interrupt void ISRTimer2(void){ CpuTimer2.InterruptCount++;} 編程中遇到的問題: 1、line 257: warning: last line of file ends without a newline; 解決方法: 點擊出現的問題條,看光標定位在哪里,然后一點點刪除,直到把編程的文字刪除,最后把刪除的寫出來,回車就行了,因為回車的格式要在編輯狀態哈哈! 28016的定時器筆記 學過2812的人會知道,2812的定時器和28016的定時器的寄存器很不一樣。但是從功能上將差不多。 關于28016定時器的時鐘的討論; 定時器的時鐘是由SYSCLKOUT經過TBCTL中的CLKDIV和HSPCLKDIV進行配置; 和 主要說明,我們應該記得SYSCLKOUT和HSPCLK之間還可以分頻,但是在這里這個寄存器不影響。 關于28016定時器的時鐘同步的討論; 如果我們想使每個PWM模塊具有同步時鐘,我們可以通過軟件強制各個模塊之間同步,設定步驟如下: EPwm1Regs.TBCTL.bit.SYNCOSEL = 0 // Pass through EPwm2Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through EPwm3Regs.TBCTL.bit.SYNCOSEL = 0;// Pass through EPwm1Regs.TBCTL.bit.SWFSYNC = 1; EPwm2Regs.TBCTL.bit.SWFSYNC = 1; EPwm3Regs.TBCTL.bit.SWFSYNC = 1;以上程序是設定PWM1/2/3同步,我們由于我們只采用向上計數,所以不需要設定計數方向位。 接下來如果我們想PWM1與PWM2輸出相位不一樣,保持某個相位差,我們可以通過寄存器設定; EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; EPwm1Regs.TBPHS.half.TBPHS = 0; EPwm2Regs.TBPHS.half.TBPHS = 250; EPwm3Regs.TBPHS.half.TBPHS = 500;首先使能,然后賦予值; 關于一些其他的配置如下: EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD; EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE; // Enable INT EPwm3Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 3rd event 關于28016PWM配置的討論 PWM1的A/B的獨立配置; 除了counter-compare比較寄存器,CMPA,CMPB,主要還是配置控制寄存器CMPCTL,對于影子寄存器的配置,還有影子寄存器的裝載模式。這里主要講關于PWM中action qualifier的配置; 模式1: // Setup shadow register load on ZERO EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // Set Compare values EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA; // Set compare A value EPwm1Regs.CMPB = 500; // Set Compare B value // Set actions EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // Set PWM1A on Zero EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Clear PWM1A on event A, up coun EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // Set PWM1B on Zero EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // Clear PWM1B on event B, up count // Interrupt where we will change the Compare Values EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT EPwm1Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event 其中紅色的為PWM的輸出方式配置,當PWM1.A在counter==0時,輸出為0,在counter==CMPA時,且在向上計數,輸出為1;而PWM1.B相反。 模式二: // Set actions EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR; // Clear PWM2A on Period EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM2A on event A, up count EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR; // Clear PWM2B on Period EPwm2Regs.AQCTLB.bit.CBU = AQ_SET; // Set PWM2B on event B, up count 其中紅色的為PWM的輸出方式配置,當PWM1.A在counter==period時,輸出為0,在counter==CMPA時,且在向上計數,輸出為1;而PWM1.B相同; 模式三: // Set Actions EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM3A on event B, up count EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR; // Clear PWM3A on event B, up count 其中紅色的為PWM的輸出方式配置,當PWM1.A在counter==CMPA時,輸出為1,在counter==CMPB時,且在向上計數,輸出為0,也就是計數在CMPA與CMPB之間時輸出為1; 模式四: EPwm3Regs.AQCTLB.bit.ZRO = AQ_TOGGLE; // Toggle EPWM3B on Zero 此模式強制整個周期輸出高或者輸出地,與CMPA與CMPB無關,關于28016PWM死區時間配置的討論 主要與死區有關的是三個寄存器: Dead-Band Generator Control Register(DBCTL); Dead-Band Generator Rising Edge Delay Register(DBRED); Dead-Band Generator Rising Edge Delay Register(DBRED)Field Descriptions; 首先清楚延時時間的計算 為:DBRED*TBCLK; 然后弄懂DBCTL就可以了。 注意理解下圖: 弄懂3個控制位什么意思; OUT_MODE,POLSEL,IN_MODE 注意第二位,這位通常用在輸入為同一個通道時,也就是IN_MODE=0X00/0X03時。簡單看一些deadband的配置: EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;輸出之前,輸入上升沿下降沿都被延時; EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;沒有取反過程; EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;輸入全部為A,此為習慣性的配置; EPwm1Regs.DBRED = 1000;EPwm1Regs.DBFED = 500; 一周解決的為題: 我的sin()函數能夠正常執行,cos()函數也能正常執行,但是當sin()計算完再計算cos(),仿真環境就會進入邏輯錯誤中斷,請問怎么解決,是不是該重裝CCS。 原因:之前一直把程序燒到RAM里,總是只能執行一個sin()和cos()函數,然后RAM的空間就不夠了,由于也不會改RAM空間的大小,所以就把程序直接下到flash里面,結果就好了。 遇到CCS和仿真器連不上的問題;Error connecting to the target: Error 0x80000240/134 Fatal Error during: Initialization, OCS Unknown Error Sequence ID: 0 Error Code: 134 Error Class: 0x80000240 I/O Port = 240 解決辦法: 我也試著解決這個問題,重裝了一次,結果沒有用。想著覺得是USB驅動的問題,然后就在設備管理器中,把USB的驅動刪除了,有重新裝了一遍,結果沒問題了。原因應該是以前用的USB口安裝的驅動,又被用于安裝其他的驅動,結果以前的USB驅動不能用了。第五篇:DSP學習心得筆記