第一篇:輸出EXCEL總結1.1
歡迎隨時補充其他內容!
* Developed By : 甄曉達 * Create Date : 2009-2-1
本文檔內容:
一、模板的下載(可參考最后面的實例程序)
二、關于EXCEL輸出 1.基本步驟
2.其他關于EXCEL表操作的補充說明
三、實例程序
四、關于CALL METHOD DOCUMENT->*的補充說明
五、關于VBA與ABAP代碼的說明
獲得EXCEL表的方式:
1.建立某格式文件
call function 'GUI_DOWNLOAD' 例: L_FULLPATH = 'C:Documents and Settingszxd桌面hello.xls'.CALL FUNCTION 'GUI_DOWNLOAD' “根據文件路徑建立文件 EXPORTING
FILENAME = L_FULLPATH FILETYPE = 'BIN' TABLES
DATA_TAB = L_MIME.注:路徑選擇也可以通過宏實現,用此種方法建立的EXCEL表只有一個SHEET!
2.用SMW0存儲的模板用
CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'下載
一、模板的下載(可參考最后面的實例程序)
1用FUNCTION: SAP_OI_LOAD_MIME_DATA下載:
INCLUDE OFFICEINTEGRATIONINCLUDE.DATA: FACTORY TYPE REF TO I_OI_DOCUMENT_FACTORY, RETCODE TYPE T_OI_RET_STRING, LINK_SERVER TYPE REF TO I_OI_LINK_SERVER.DATA: DOC_SIZE TYPE I, DOC_FORMAT(100), DOC_TYPE(100)VALUE 'Word.Document.8', DOC_TABLE LIKE W3MIME OCCURS 0, DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY, IS_CLOSED TYPE I.DATA L_FULLPATH TYPE STRING.INITIALIZATION.PERFORM INIT_FACTORY.”下載模板時需要初始化的內容 START-OF-SELECTION.L_FULLPATH = ‘C:SHIYAN’.“用FUNCTION選擇文件地點寫入L_FULLPATH也可 PERFORM OPEN_DOC USING L_FULLPATH.” L_FULLPATH為文件存儲的路徑,C或者字符串都行,子程序里會人為的修改成C類型,如果此處定義為C類型則子程序里不用再做變換
FORM INIT_FACTORY.IF FACTORY IS INITIAL.CALL METHOD C_OI_FACTORY_CREATOR=>GET_DOCUMENT_FACTORY IMPORTING
FACTORY = FACTORY RETCODE = RETCODE.IF RETCODE NE C_OI_ERRORS=>RET_OK.EXIT.ENDIF.CALL METHOD FACTORY->START_FACTORY EXPORTING
R3_APPLICATION_NAME = SY-SYSID IMPORTING
RETCODE = RETCODE.CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING
TYPE = 'E'.CALL METHOD FACTORY->GET_LINK_SERVER IMPORTING
LINK_SERVER = LINK_SERVER RETCODE = RETCODE.CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING
TYPE = 'W'.CALL METHOD LINK_SERVER->START_LINK_SERVER IMPORTING
RETCODE = RETCODE.CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING
TYPE = 'W'.ELSE.CALL METHOD LINK_SERVER->STOP_LINK_SERVER IMPORTING
RETCODE = RETCODE.ENDIF.“factory IS INITIAL.ENDFORM.” INIT_FACTORY
FORM OPEN_DOC USING L_FULLPATH.DATA: OBJECT_ID(20).CLEAR OBJECT_ID.DATA: DIZHI(100)TYPE C.DIZHI = L_FULLPATH.OBJECT_ID = 'ZHRIS087A'.CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'
EXPORTING
OBJECT_ID = OBJECT_ID IMPORTING
DATA_SIZE = DOC_SIZE DOCUMENT_FORMAT = DOC_FORMAT DOCUMENT_TYPE = DOC_TYPE TABLES
DATA_TABLE = DOC_TABLE EXCEPTIONS
OBJECT_NOT_FOUND = 1 INTERNAL_ERROR =
2OTHERS = 3.IF SY-SUBRC NE 0.MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.IF DOC_SIZE NE 0.CALL METHOD FACTORY->GET_DOCUMENT_PROXY EXPORTING
DOCUMENT_TYPE = DOC_TYPE IMPORTING
DOCUMENT_PROXY = DOCUMENT RETCODE = RETCODE.CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING
TYPE = 'E'.“ 打開下載的模板(注:不CALL METHOD不能正常打開
CALL METHOD DOCUMENT->PLAY_DOCUMENT_FROM_TABLE EXPORTING
DOCUMENT_TABLE = DOC_TABLE[] DOCUMENT_SIZE = DOC_SIZE NO_FLUSH = 'X'
IMPORTING
RETCODE = RETCODE.” 按DIZHI存儲的路徑保存下載的模板,不打開也能保存!
CALL METHOD DOCUMENT->SAVE_COPY_AS EXPORTING
FILE_NAME = DIZHI NO_FLUSH = 'X' PROMPT_USER = ' '
IMPORTING
RETCODE = RETCODE.CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING
TYPE = 'E'.PERFORM CLOSE_DOC.PERFORM CLOSE_FACTORY.ELSE.MESSAGE 'No document selected' TYPE 'E'.ENDIF.ENDFORM.“ OPEN_DOC
FORM CLOSE_DOC.IF NOT DOCUMENT IS INITIAL.CALL METHOD DOCUMENT->IS_DESTROYED IMPORTING
RET_VALUE = IS_CLOSED.IF IS_CLOSED IS INITIAL.CALL METHOD DOCUMENT->CLOSE_DOCUMENT EXPORTING DO_SAVE = 'X'
IMPORTING
RETCODE = RETCODE.CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING
TYPE = 'E'.ENDIF.CALL METHOD DOCUMENT->RELEASE_DOCUMENT EXPORTING
NO_FLUSH = ' '
IMPORTING
RETCODE = RETCODE.FREE DOCUMENT.ENDIF.ENDFORM.” CLOSE_DOC
FORM CLOSE_FACTORY.IF NOT LINK_SERVER IS INITIAL.CALL METHOD LINK_SERVER->STOP_LINK_SERVER IMPORTING
RETCODE = RETCODE.FREE LINK_SERVER.ENDIF.IF NOT FACTORY IS INITIAL.CALL METHOD FACTORY->STOP_FACTORY IMPORTING
RETCODE = RETCODE.FREE FACTORY.ENDIF.ENDFORM.“ CLOSE_FACTORY
二、關于EXCEL輸出 1.基本步驟:
第一步:定義變量: TYPE-POOLS OLE2.DATA: V_EXCEL TYPE OLE2_OBJECT, “excel 表
V_SHEET TYPE OLE2_OBJECT, “EXCEL 表中的SHEET V_BOOK TYPE OLE2_OBJECT, V_CELL TYPE OLE2_OBJECT, “SHEET 中的單元格
注:上面定義的4個一般為必然會用到的變量,下面的變量可以在用到時再做定義 V_RANGE TYPE OLE2_OBJECT, “選中區域 V_COLUMN TYPE OLE2_OBJECT, “選中列
V_BORDERS TYPE OLE2_OBJECT.“選中區域的邊框 DATA: V_SHEET_NUMBER TYPE I, PA_PATH TYPE STRING, L_ROW TYPE I, L_COL TYPE I, 第二步:打開已存在的EXCEL模板
CREATE OBJECT V_EXCEL 'Excel.Application'.”創建Excel對象
CALL METHOD OF V_EXCEL 'Workbooks' = V_BOOK.“ excel createwbook
CALL METHOD OF V_BOOK 'Open' = V_BOOK EXPORTING
#1 = PA_PATH.”文件存儲的路徑,字符串,C類型應該也可以,沒有試驗 “注:也可以新建一個EXCEL:call method of v_books 'Add' = v_book.IF SY-SUBRC <> 0.MESSAGE 'Open file failed!' TYPE 'E'.STOP.ENDIF.SET PROPERTY OF V_EXCEL 'Visible' = 1.”將已經打開的EXCEL表設置可見
第三步:打開EXCEL表其中的一個SHEET并修改SHEET名 V_SHEET_NUMBER = 1.“打開EXCEL表第一個SHEET
CALL METHOD OF V_BOOK 'Sheets' = V_SHEET ”打開EXCEL的SHEET
EXPORTING #1 = PA_SHEET_NUMBER.* CALL METHOD OF V_EXCEL 'WORKSHEETS' = V_SHEET “效果和上面SHEETS一樣,輸出數據同樣可以是SHEET名也可以是數字
* EXPORTING * #1 = 'Sheet3'.CALL METHOD OF V_SHEET 'ACTIVATE'.”顯示當前選擇的SHEET,如不寫此句顯示SHEET為第一個SHEET,不過下面的其他操作仍然只是對被選擇的SHEET有效
SET PROPERTY OF V_SHEET 'NAME' = 'SHIYAN'.“此語句可以修改選擇的SHEET名
*想新建SHEET可以調用下面的語句,注意下面第一條語句不能指定SHEET,否則不能添加成功(意即目前只能添加SHEET到最前面)
* CALL METHOD OF V_BOOK 'WORKSHEETS' = TMPSHEET.* CALL METHOD OF TMPSHEET 'ADD'.第四步:往EXCEL表里填寫內容
CALL METHOD OF V_SHEET 'Cells' = V_CELL EXPORTING
#1 = L_ROW ”寫入的行號
#2 = L_COL.“寫入的列號
SET PROPERTY OF V_CELL 'Value' = SY-DATUM.”SY-DATUM為填寫的內容 第五步:保存并釋放SAP對EXCEL的鏈接
SET PROPERTY OF V_EXCEL 'DisplayAlerts' = 0.“不顯示警告提示,如不加此句,保存文件時會彈出“當前位置以有名為*的文件,是否?”的詢問對話框,加上此句則直接保存 CALL METHOD OF V_BOOK 'SAVEAS' ”保存EXCEL文本文件(如果需要保存修改的SHEET命,得用V_EXCEL
EXPORTING #1 = PA_FULLPATH.CALL METHOD OF V_BOOK 'Exit' = V_BOOK.“此句作用尚不明確!不寫沒發現影響 FREE OBJECT V_EXCEL.FREE OBJECT V_SHELL.?? 2.其他關于EXCEL表操作的補充說明:
2.1調用EXCEL表宏
CALL METHOD OF V_EXCEL 'WORKSHEETS' = V_SHEET EXPORTING #1 = 'SHEET1'.CALL METHOD OF H_SHEET 'ACTIVATE'.CALL METHOD OF EXCEL 'RUN' EXPORTING #1 = 'ZMACRO1'.2.2輸入列號求得列字母表示(自編宏,HR項目組用,其他如沒有自己寫吧??)
CALL FUNCTION 'ZHRIS_GET_EXCEL_COLUMN'
EXPORTING
P_COLUMN = L_INT IMPORTING
F_COLUMN = COL.例:輸入L_INT = 5 輸出 COL = ‘e’.2.3調整列寬度與行高及插入行
DATA V_COLUMN TYPE OLE2_OBJECT.DATA V_ROWS TYPE OLE2_OBJECT.*--調整列寬度
CALL METHOD OF V_EXCEL 'Columns' = V_COLUMN ”選定列 EXPORTING
#1 = ‘1:5’.“修改1-5列
SET PROPERTY OF V_COLUMN 'ColumnWidth' = 30.”要調整的寬度 *--調整行寬度
CALL METHOD OF V_EXCEL 'ROWS' = V_ROWS EXPORTING
#1 = 1.“行號
SET PROPERTY OF V_ROWS 'rowheight' = 50.CALL METHOD OF V_ROWS 'Insert'.”插入一行 注:行高會影響到所有行,設置單獨的行高方法待查!
2.4 獲得當前EXCEL表的SHEET數量 DATA SHEETCOUNT TYPE I.CALL METHOD OF V_EXCEL 'WORKSHEETS' = V_SHEET.“ worksheet
得到活動的 GET PROPERTY OF V_SHEET 'COUNT' = SHEETCOUNT.”得到sheet數量
WRITE SHEETCOUNT.2.5 獲得當前打開的SHEET名稱(需執行打開SHEET操作后才能執行)DATA SHEETNAME TYPE STRING.GET PROPERTY OF V_SHEET 'NAME' = SHEETNAME.“此語句用來獲得當前打開的SHEET名稱
2.6 復制SHEET DATA MODELSHEET TYPE OLE2_OBJECT.DATA TMPSHEET TYPE OLE2_OBJECT.CALL METHOD OF V_EXCEL 'WORKSHEETS' = MODELSHEET ” 要復制的SHEET EXPORTING #1 = 'Sheet2'.CALL METHOD OF V_EXCEL 'WORKSHEETS' = TMPSHEET EXPORTING #1 = 'Sheet3'.CALL METHOD OF MODELSHEET 'COPY' “ 復制MODELSHEET 放到TMPSHEET前
EXPORTING #1 = TMPSHEET.” 如不加此項則建立一個新表存儲SHEET
2.7 隱藏格線
DATA ACTIVEWINDOW TYPE OLE2_OBJECT.CALL METHOD OF V_EXCEL 'ACTIVEWINDOW' = ACTIVEWINDOW.“得到活動窗口對象 SET PROPERTY OF ACTIVEWINDOW 'DISPLAYGRIDLINES' = 0.”隱藏格線(虛線)注:不要用V_SHEET,可能會導致輸出數據不正常,原因不明,新定義一個比較保險。
2.8 選中EXCEL表某區域并做操作
CALL METHOD OF V_SHEET 'range' = V_RANGE “設定操作范圍
EXPORTING #1 = 'a3' #2 = 'B5'.CALL METHOD OF V_RANGE 'Select' NO FLUSH.” 選擇設定區域
CALL METHOD OF V_RANGE 'ClearContents'.“清空內容
SET PROPERTY OF V_RANGE 'MergeCells' = 1.”合并單元格
SET PROPERTY OF V_RANGE 'HorizontalAlignment' = 2.“設定對齊方式(1:無對齊 2:左對齊 3:居中 4:右對齊)
SET PROPERTY OF V_RANGE 'ShrinkToFit' = 0.”取消自動縮小字體 GET PROPERTY OF V_RANGE 'borders' = V_BORDERS NO FLUSH.“加邊框
SET PROPERTY OF V_BORDERS 'linestyle' = '1' NO FLUSH.”框線格式 SET PROPERTY OF V_RANGE 'WrapText' = 1.“單元格內容自動換行
2.9 移動SHEET DATA V_MOVE TYPE OLE2_OBJECT.CALL METHOD OF V_EXCEL 'WORKSHEETS' = V_SHEET ”選擇要移動的SHEET
EXPORTING #1 = 'Sheet1'.CALL METHOD OF V_EXCEL 'WORKSHEETS' = V_MOVE “選擇移動到的位置
EXPORTING #1 = 'Sheet3'.CALL METHOD OF V_SHEET 'Move' ”移動 V_SHEET 到 V_MOVE 左邊
EXPORTING #1 = V_MOVE.三、實例程序
用下載模板的實例程序:
EXCEL各功能操作試驗程序:
四、關于CALL METHOD DOCUMENT的補充說明(其他用法請見二下載模板的說明)
1.用下面這個METHOD可以直接打開下載的模板
CALL METHOD DOCUMENT->OPEN_DOCUMENT_FROM_TABLE EXPORTING
DOCUMENT_SIZE = DOC_SIZE DOCUMENT_TABLE = DOC_TABLE[] 2.用下面這個METHOD可以調用下載模板的動態宏 MACRO = 'Macro2'.“宏名稱
CALL METHOD DOCUMENT->EXECUTE_MACRO EXPORTING
MACRO_STRING = macro ”調用宏的名稱 * NO_FLUSH = ' '
PARAM1 = param1 “各參數值(用到幾個打開幾個)* PARAM10 = * PARAM11 = * PARAM12 =
PARAM2 = param2 PARAM3 = param4 PARAM4 = param3 * PARAM5 = * PARAM6 = * PARAM7 = * PARAM8 = * PARAM9 =
PARAM_COUNT = 4 ”要傳進的參數數量 * SCRIPT_NAME = * IMPORTING
* ERROR = error * RETCODE = * CHANGING
* ERROR_STRING = * RETVALUE =.注1:EXCEL和WORD里寫宏最簡單的方法便是錄制,錄宏的方法如下:執行菜單命令“工具—>宏—>錄制新宏”開始錄制,按照步驟把想實現的功能操作一遍,完畢后點擊停止按鈕,再根據是否需要傳遞參數等要求修改一下錄制好的宏即可。
最左邊的注2:一般輸出數據到WORD的話可能會用到郵件合并功能,郵件合并功能的設置方法如下:(可以參考程序ZHRIS_PAFM024模板的用法)
將excel中的人員信息表作為數據源。在word中建立一個主文檔,設計排版出一個空白的履歷表,不變的那部分內容先填好,如“姓名”、“年齡”、“學歷”等。
執行菜單命令“工具—信函與郵件—顯示郵件合并工具欄”調出郵件合并工具欄。點擊“打開數據源”按鈕(左起第2個圖標),在打開的對話框中找到并打開人員信息excel表,選擇存有人員信息的那個工作表即可。
確定后退回word主界面,點擊履歷表“姓名”后面的空白單元格,然后點擊“插入域”按鈕(左起第6個圖標),打開插入合并域對話框,選擇“姓名”項,單擊“插入”,最后單擊“關閉”退出。這時,會發現履歷表“姓名”后面的單元格中出現“《姓名》”字樣,這就是合并域的所謂占位符了。依此類推,為其他項目插入相應的合并域。點擊“查看合并數據”(標有“ABC”的圖標),你會發現所有占位符都被替換成真實的數據了,單擊工具欄上的左、右方向按鈕,可以快速瀏覽所有的履歷,如未發現問題,可單擊“合并到新文檔”按鈕(倒數第4個圖標),從彈出對話框中選擇“全部”記錄,確定即可生成一個全新的word文檔,每個人的履歷都被放在一個單獨的頁面,打印出來即可。
注3:當錄制向WORD插入照片的宏時,會遇到無法設定鼠標位置的問題,用下面一個方法可以解決:(適合只需要插入一張照片的宏,多張照片需另想辦法??)
宏的第一步先寫插入照片的代碼,在插入語句代碼前加上Application.GoBack語句(對應操作SHIFT+F5)。返回模板將鼠標放在要插入照片的位置上,點擊保存按鈕(必須有修改過內容,文件不能處于已保存狀態),然后關閉模板文件即可。
SHIFT+F5的作用:在初打開文件未做任何操作時使用可以使鼠標回到上一次保存文件時的位置。注4:補充一個VBA宏命令:
修改另存為時默認的文件名:(文件名用動態從字段中取到的值)Dim l_month As Integer Dim l_year As Integer l_month=ActiveDocument.MailMerge.DataSource.DataFields(“MONTH”).Value l_year = ActiveDocument.MailMerge.DataSource.DataFields(“YEAH”).Value ActiveDocument.SaveAs FileName:=l_year & “年” & l_month & “月工資勞務費審批單”
五、關于VBA與ABAP代碼的說明(以下內容純屬個人理解,歡迎隨時修正!)
OFFICE宏命令編程用到VISUAL BASIC,ABAP語言用程序實現OFFICE的各項功能其實也是調用(或者是實現?不是特別清楚=,.=)了VB語言而已,那么接下來就講如何通過OFFICE錄制的宏轉化為ABAP語言代碼。
以EXCEL相關內容舉例:
要想操作EXCEL就得知道想要操作的對象,是整個EXCEL表,還是
第二篇:STM32 PWM輸出總結
學習后發現stm32的定時器功能確實很強大,小總結一下方便以后使用的時候做參考。Stm32定時器一共分為三種:tim1和tim8是高級定時器,6和7是基本定時器,2—5是通用定時器。從名字就可以看得出來主要功能上的差異。今天我主要是用定時器做pwm輸出,所以總結也主要是針對pwm方面的。
先大致說下通用和高級定時器的區別。通用的可以輸出四路pwm信號互不影響。高級定時器可以輸出三對互補pwm信號外加ch4通道,也就是一共七路。
所以這樣算下來stm32一共可以生成4*5+7*2=30路pwm信號。接下來還有功能上的區別:通用定時器的pwm信號比較簡單,就是普通的調節占空比調節頻率(別的不常用到的沒去深究);高級定時器的還帶有互補輸出功能,同時互補信號可以插入死區,也可以使能剎車功能,從這些看來高級定時器的pwm天生就是用來控制電機的。
Pwm輸出最基本的調節就是頻率和占空比。頻率當然又和時鐘信號扯上了關系。高級定時器是掛接到APB2上,而通用定時器是掛接到APB1上的。APB1和APB2的區別就要在于時鐘頻率不同。APB2最高頻率允許72MH,而APB1最高頻率為36MHZ。這樣是不是通用定時器只最高36MHZ頻率呢,不是的;通用定時器時鐘信號完整的路線應該是下面這樣的: AHB(72mhz)→APB1分頻器(默認2)→APB1時鐘信號(36mhz)→倍頻器(*2倍)→通用定時器時鐘信號(72mhz)。
在APB1和定時器中間的倍頻器起到了巨大的作用,假如紅色字體的“APB1分頻器”假如不為1(默認是2),倍頻器會自動將APB1時鐘頻率擴大2倍后作為定時器信號源,這個它內部自動控制的不用配置。設置這個倍頻器的目的很簡單就是在APB1是36mhz的情況下通用定時器的頻率同樣能達到72mhz。我用的庫函數直接調用函數SystemInit();這個函數之后時鐘配置好了:通用定時器和高級定時器的時鐘現在都是72mhz(你也可以自己再配置一下RCC讓他的頻率更低,但是不能再高了)。定時器接下來還有一個分頻寄存器:TIMX_PSC經過他的分頻后,才是定時器計數的頻率。所以真正的時鐘頻率應該是72mhz/(TIMX_PSC-1),我們設為tim_frepuency下面還會用到。
stm32的時鐘頻率弄得確實是很饒人的,所以關鍵就是先要把思路理清楚。時鐘的頻率弄好了下面終于可以開說重點PWM了。當然還少不了頻率:pwm主要就是控制頻率和占空比的:這兩個因素分別通過兩個寄存器控制:TIMX_ARR和TIMX_CCRX。ARR寄存器就是自動重裝寄存器,也就是計數器記到這個數以后清零再開始計,這樣pwm的頻率就是tim_frequency/(TIMX_ARR-1)。在計數時會不停的和CCRX寄存器中的數據進行比較,如果小于的話是高電平或者低電平,計數值大于CCRX值的話電平極性反相。所以這也就控制了占空比。
下面是定時器1的配置代碼:
GPIO_InitTypeDef GPIO_InitStructure2;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
//第一步:配置時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|
RCC_APB2Periph_GPIOB|RCC_APB2Periph_TIM1,ENABLE);
//第二步,配置goio口
/********TIM1_CH1 引腳配置*********/
GPIO_InitStructure2.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure2.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure2.GPIO_Mode=GPIO_Mode_AF_PP;
//設置為復用浮空輸出
GPIO_Init(GPIOA,&GPIO_InitStructure2);
/*********TIM1_CH1N 引腳配置********/
GPIO_InitStructure2.GPIO_Pin=GPIO_Pin_13;
GPIO_InitStructure2.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure2.GPIO_Mode=GPIO_Mode_AF_PP;
//設置為復用浮空輸出
GPIO_Init(GPIOB,&GPIO_InitStructure2);
//第三步,定時器基本配置
TIM_TimeBaseStructure.TIM_Period=1000-1;
// 自動重裝載寄存器的值
TIM_TimeBaseStructure.TIM_Prescaler=72-1;
// 時鐘預分頻數
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;// 采樣分頻
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上計數
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;//重復寄存器,用于自動更新pwm占空比
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
//第四步pwm輸出配置
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
//設置為pwm1輸出模式
TIM_OCInitStructure.TIM_Pulse=500;
//設置占空比時間
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
//設置輸出極性
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
//使能該通道輸出
//下面幾個參數是高級定時器才會用到,通用定時器不用配置
TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High;
//設置互補端輸出極性
TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Enable;//使能互補端輸出
TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Reset;
//死區后輸出狀態
TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;//死區后互補端輸出狀態
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
//按照指定參數初始化
//第五步,死區和剎車功能配置,高級定時器才有的,通用定時器不用配置
TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Disable;//運行模式下輸出選擇
TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Disable;//空閑模式下輸出選擇
TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
//鎖定設置
TIM_BDTRInitStructure.TIM_DeadTime = 0x90;
//死區時間設置
TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
//剎車功能使能
TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;//剎車輸入極性
TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;//自動輸出使能
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
//第六步,使能端的打開
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);//使能TIMx在CCR1上的預裝載寄存器
TIM_ARRPreloadConfig(TIM1, ENABLE);
//使能TIMx在ARR上的預裝載寄存器
TIM_Cmd(TIM1,ENABLE);
//打開TIM2
//下面這句是高級定時器才有的,輸出pwm必須打開
TIM_CtrlPWMOutputs(TIM1, ENABLE);
//pwm輸出使能,一定要記得打開
TIM_OC1PreloadConfig(),TIM_ARRPreloadConfig();這兩個函數控制的是ccr1和arr的預裝在使能,使能和失能的區別就是:使能的時候這兩個局存期的讀寫需要等待有更新事件發生時才能被改變(比如計數溢出就是更新時間)。失能的時候可以直接進行讀寫而沒有延遲。另外在運行當中想要改變pwm的頻率和占空比調用:TIM_SetAutoreload()TIM_SetCompare1()這兩個函數就可以了。
第三篇:文化輸出
西方有人認為中國到二十一世紀初葉將成為經濟大國,甚至是軍事大國,其實中國從本質上說是一個文化大國,最有可能對人類文明做出貢獻的是中國文化,二十一世紀將是中國文化的世紀。——季羨林
茍日新,日日新,又日新。”“天行健,君子以自強不息。”這既是中華民族的先哲通過觀察宇宙萬物提出的重要思想,也深刻揭示了中華民族自強不息的民族精神,因此成為中國的千年傳世格言。——胡錦濤
中國,近五十年發展迅速的發展中國家,其經濟高速發展之下更是帶動起文化的發展和內在歷史人文的挖掘。從《舌尖上的中國》到日常的影視作品,甚至日常生活中用到的家居產品,都帶著中國人文的精神烙印。一些傳統的、歷史的、帶有人文色彩的產品逐漸從歷史中走出,帶著新時代的歷史使命,重新煥發出新的色彩。
2017年7月27日,作為建軍90周年獻禮片,《戰狼2》登陸國內各大院線。影片以中國海外撤僑真實事件為背景,講述中國退伍軍人冷鋒在非洲戰亂地區不顧個人安危營救同胞和異國難民的英雄故事。上映以來,幾乎場場爆滿,憑借良好口碑產生的“自來水效應”,《戰狼2》接連打破國內多項電影票房紀錄。
2018年2月16日在中國內地上映[2] ;3月1日在中國香港上映《紅海行動》
該片體現出了中國軍人的英雄氣概與大國崛起的精神氣度,把中國軍事題材影片推向新的高度。它沒有把單打獨斗式的個人英雄主義當作當代中國海軍官兵的精神制高點,而是把鏡頭的焦點對準了集體的力量。其情感邏輯、動作邏輯的精細把控,和現代藝術技術手段的創造性運用,使得整個撤僑和戰爭場面的宣言,尤其是危急出兵、突圍營救人質,最后的追擊等場面,拍出了身臨其境的真實感和攝人心魂的震撼效果。
電影工業化往往是文化輸出的重要手段,隨著中國國力的日漸強盛以及國際影響力的不斷擴大,世界渴望中國聲音。從戰狼類型片構建的價值觀,可以管窺中國正在醞釀和試圖對外輸出的國際關系觀:軟弱無力的政府軍、摻雜恐怖主義的反政府武裝、撤僑行動以及我國與他國政府合作構成軍事行動的必要條件共同構建一個相同的主題,那就是中國作為國際秩序的主導國家,對于國際責任的承擔和克制,即天下體系的重構。
“文運同國運相牽,文脈同國脈相連。”從戰狼2到紅海行動,從電影工業化到文化輸出,中國開始尋求對新型國際關系的思考。這是文化自信的必然體現,更是中國作為國際秩序主導者的責任與擔當。
其實,文化輸出,我們可不是只有電影,隨著綜合國力的發展,文化產業也開始成為了我國經濟發展中的一支重要力量。很多優秀的文化產品都已經走出了國門,讓歪國人們也領略到了一把中國文化的魅力。
以前談到中國的文化產品,無非是一些國畫書法、剪紙紡織這些傳統手藝上面。外國人對于中國的認知也只是停留在這些習以為常傳統符號上。
而現在,在流行文化上,我們也開始嶄露頭角。如今中國處在高速的現代化進程中,人們對未來充滿了憧憬,科幻小說也隨之興起。中國的科幻小說《三體》、《北京折疊》獲得科幻藝術屆最高獎“雨果獎”、“星云獎”。并且在海外暢銷,中國科幻也贏得了世界目光的青睞,開始了進軍世界市場的征途。除了科幻之外,也有越來越多的中國當代文學擺在了歐美發達地區的書店里。
電子游戲產業同樣是一個文化輸出的全新的領域,經歷了數年的厚積薄發后,一批優秀中國的游戲作品也贏得了世界的認可。在海外最大的電子游戲銷售平臺上,眾多國產游戲好評如潮。“中國制造”的手機游戲也能夠在超過100個國家進入應用程序銷售榜前十名,甚至成為了引導世界手機游戲市場的風向標。
中國在“新時代”文化輸出國家實施的措施主要有三點。
1:補齊短板精準扶貧,現代公共文化服務體系建設邁上新臺階
黨的十八大以來,在以習近平同志為核心的黨中央堅強領導下,廣大文化工作者堅定文化自信,堅守中華文化立場,堅持以人民為中心的工作導向,推動社會主義核心價值觀和中華優秀傳統文化廣泛弘揚。
公共文化服務體系建設制度框架初步建立。公共文化服務保障法、公共圖書館法相繼施行,明確了各級政府在公共文化服務中的主導地位,為公共文化服務體系建設提供了強有力的法制保障。
2:讓主旋律更響亮、正能量更強勁,文藝創作精益求精文化產業蓬勃發展
《戰狼2》《芳華》《無問西東》《唐人街探案2》《紅海行動》等不同類型的國產影片接連成為“爆款”,業內專家認為,市場的“井噴式”繁榮,得益于創作水平的不斷提升。
精益求精搞創作,力爭把最好的精神食糧奉獻給人民。五年來,我國文藝園地百花競放、碩果累累,呈現出繁榮發展的生動景象:《平凡的世界》《海棠依舊》《北平無戰事》《人民的名義》《白鹿原》等電視劇熱播,《朗讀者》《國家寶藏》《經典詠流傳》等多檔文化節目引發觀眾情感共鳴;現代京劇《西安事變》、豫劇《焦裕祿》、評劇《母親》、湘劇《月亮粑粑》、話劇《麻醉師》等一大批弘揚社會主義核心價值觀的優秀作品,引導人們求真、崇善、向美,讓主旋律更響亮,正能量更強勁。
3:堅持創造性轉化、創新性發展,優秀傳統文化煥發新活力
紀錄片《我在故宮修文物》、電視節目《中國詩詞大會》等熱播,成為現象級節目;文化遺產走出博物館,通過文化創意產品開發走入百姓家;非物質文化遺產插上“共享經濟”“體驗經濟”翅膀,開辟出產業發展新天地??近年來,優秀傳統文化逐漸融入人民生產生活,重新煥發生機活力。
相信未來會與更多的國產電視劇,電影會火出國門。我們也期待中國的影視作品,能夠克服重重難關,逐漸成為中國的文化名片,傳遞更多的中國聲音,向世界闡釋更多具有中國特色、體現中國精神、蘊藏中國智慧的優秀文化。
第四篇:字符串輸出格式
printf的格式控制的完整格式:
%-0m.nl或h格式字符
下面對組成格式說明的各項加以說明:
①%:表示格式說明的起始符號,不可缺少。
②-:有-表示左對齊輸出,如省略表示右對齊輸出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域寬,即對應的輸出項在輸出設備上所占的字符數。
n指精度,用于說明輸出的實型數的小數位數。為指定n時,隱含的精度為n=6位。
⑤l或h:l對整型指long型,對實型指double型。h用于將整型的格式字符修正為short型。
格式小結:
(1)最常用的格式是%d,含義是以10進制形式打印一個整數。
如果輸出的整數是負數,則輸出的第一個字符就是-號。
%d:按整型數據的實際長度輸出。
%md:m為指定的輸出字段的寬度。如果數據的位數小于m,則左端補以空格,若大于m,則按實際位數輸出。
%ld:輸出長整型數據。
(2)%u格式與%d格式類似,只不過要求打印無符號10進制整數。
以無符號十進制形式輸出整數。
對長整型可以用“%lu”格式輸出。同樣也可以指定字段寬度用“%mu”格式輸出。
(3)%o格式請求輸出8進制整數,以無符號八進制形式輸出整數。
對長整型可以用“%lo”格式輸出。同樣也可以指定字段寬度用“%mo”格式輸出。
(4)%x和%X格式請求輸出16進制整數。
%x格式中用小寫字母a,b,c,d,e,f來表示10到15之間的數,以無符號十六進制形式輸出整數。
對長整型可以用“%lx”格式輸出。同樣也可以指定字段寬度用“%mx”格式輸出。%X格式中用大寫字母A,B,C,D,E,F來表示10到15之間的數
共同點:8進制和16進制整數總是作為無符號數處理的。
(5)%s格式用于打印字符串,與之對應的參數應該是一個字符指針,待輸出的字符始于該指針所指向的地址,直到出現一個空字符(' 主站蜘蛛池模板: 加勒比无码人妻东京热| 伊人色综合视频一区二区三区| 亚洲精品成人片在线观看精品字幕| xxxxx欧美| 久久天天躁夜夜躁狠狠85麻豆| 人妻无码人妻有码中文字幕| 起碰免费公开97在线视频| 中文字幕一区二区三区精彩视频| 久久精品成人无码观看免费| 国产色诱视频在线播放网站| 精品综合久久久久久888蜜芽| 日韩亚洲国产主播在线不卡| 少妇人妻偷人精品无码视频| 国产做爰全免费的视频| 99久久久无码国产精品秋霞网| 免费无码毛片一区二区三区a片| 无码人妻一区二区三区兔费| 国产精品久久久久久久网| 日本内射精品一区二区视频| 亚洲精品国产一区二区精华液| 伊人久久大香线蕉av不变影院| 日韩欧美群交p内射捆绑| 免费现黄频在线观看国产| 99久re热视频这只有精品6| 免费观看又污又黄的网站| 免费人成再在线观看网站| 国产性天天综合网| 免费无码精品黄av电影| 麻豆国产97在线 | 中国| 国产精品人妻一区二区高| 女人18毛片水最多| 久久综合九色综合97婷婷| 免费看一区二区三区四区| 久久精品国产清自在天天线| 亚洲午夜无码久久久久蜜臀av| 久久综合色老色| 欧美最猛黑A片黑人猛交蜜桃视频| 97色伦图区97色伦综合图区| 国产产区一二三产区区别在线| 国产成人啪精品午夜网站a片免费| 好男人社区在线www|