相關經驗及心得如下:
摘要:1.在配置USART的TX完成中斷后,在沒有發(fā)數的情況下自動進入TX完成中斷函數。2 .在TX配置完成后,相應的TC標志位會自動置1,隨后就進入了TX完成中斷。3.相關配置程序編寫無誤,并已經開啟時鐘,依舊無法配置相關GPIO及外設;4.ADC通道:分為規(guī)則組和注入組;5.修改定時器的預裝值后,定時器不能立刻修改。
在配置USART的TX完成中斷后,在沒有發(fā)數的情況下自動進入TX完成中斷函數。2. 問題分析:
在TX配置完成后,相應的TC標志位會自動置1,隨后就進入了TX完成中斷。
(TC標志位:發(fā)送完成標志位 )
當包含有數據的一幀發(fā)送完成后,由硬件將該位置位。如果USART_CR1中的TCIE為1,則產生中斷。由軟件序列清除該位(先讀USART_SR,然后寫入USART_DR)。TC位也可以通過寫入0來清除,只有在多緩存通訊中才推薦這種清除程序。
0:發(fā)送還未完成;
1:發(fā)送完成成。
a)方案一:先讀狀態(tài)寄存器(USART_SR),然后再DR發(fā)送寄存器中寫數,TC標志位自動清除;
/**用于清除TC標志位**/USART_GetFlagStatus(USART1,USART_IT_TC);USART1->DR=0x00;123
b)方案二:強行將SR寄存器的TC位寫0,但是在實際運行過程中TC標志位不能立刻清零,需要增加一個延遲函數,才能使得TC標志位清零;
4.其他補充
無
相關配置程序編寫無誤,并已經開啟時鐘,依舊無法配置相關GPIO及外設;
2. 問題分析:在調試過程運用IAR查看單片機相關的寄存器狀態(tài),發(fā)現(xiàn)相應的寄存器在運行配置程序后仍然沒有反應,懷疑可能相應外設,沒有啟動,分析原因可能是沒有時鐘。
3. 解決方法:在配置GPIO及外設之前就應該將開啟相應的時鐘;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //首先應該開啟時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//首先應該開啟時鐘/**TX--PA9**/GPIOInitStruct.GPIO_Mode=GPIO_Mode_AF_PP;GPIOInitStruct.GPIO_Pin=GPIO_Pin_9;GPIOInitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIOInitStruct);1234567三、 ADC通道
ADC通道:分為規(guī)則組和注入組
規(guī)則組:每次轉換n個,直至所轉換結束,無SEXT標志位;
注入組:每次轉換一個,直至完成所有組員,有SEXT標志位;
配置的變量,在未修改的情況下改變;
2、問題分析:變量在未修改的情況下改動,懷疑數據存在溢出,可能是因為指針、DMA配置有關。由于本次測試程序中沒有運用數據指針,懷疑是DMA配置問題,查看DMA配置,發(fā)現(xiàn)
DMA_InitStruct.DMA_BufferSize=(DMATXLENGTH*sizeof(int));/*緩沖大小配置成數據所需要的的緩存空間大小,但實際這個函數配置的是數據的個數。上述的配置就導致了DMA的傳輸通道增加,指向了錯誤的變量地址;*/12343、解決方法
DMA_InitStruct.DMA_BufferSize=DMATXLENGTH;14、深入思考
DMA在某些情況下可以想象成運用指針直接給變量賦值、數組賦值等,因此在使用直接訪問內存地址過程中要明確清晰的知道所指向的地址、該地址中對應數據所占空間的大小、所需要指向的數據個數等。盡量避免指針指錯的現(xiàn)象。在某些使用DMA傳輸的數據,這些數據往往只隨著源數據的變化而變化,在后續(xù)的數據調用中很少進行額外的改動,因此,在處理目的數據的時候,增加const關鍵字進行修飾,可以有效的防止目的數據的意外更改。五、 定時器PWM輸出1、問題描述:
修改定時器的預裝值后,定時器不能立刻修改。
2、問題分析:在仿真過程中查看寄存器,在修改預裝值后寄存器的配置沒有改變,而是完成一次后才做修改的。于是查看手冊,需要修改相應寄存器捕獲/比較模式寄存器2(TIMx_CCMR2)中的OCxPE和OCxFE。
位3 OC3PE:輸出比較3預裝載使能
位2 OC3FE:輸出比較3快速使能
直接運用指針修改寄存器相應的位的數值。
TIM3->CCMR2=TIM3->CCMR2|0x0004;//將OC3FE置1TIM3->CCMR2=TIM3->CCMR2&0xfff7;//將OC3PE清零TIM3->CCR3=(u16)0*00;//向預裝寄存器寫值(CCR3寄存器)123





