|
前言:采用模塊編程,每個模塊都有.H 和.c 文件。 所以編寫前加入到自己的工程里面。
1.問題:配置一個USART,往往涉及到引腳,DMA通道,中斷向量,接收發送的配置,RCC外設時鐘的配置?
為了方便配置,我將這些 配置整合到了這3個函數。
配置usart1使用波特率57600 并且使用DMA,只要這三句
SZ_STM32_COMInit(0,57600);
__SZ_STM32_USART_DMAInit(0);
__SZ_STM32_USART_NVICInit(0);
如果要切換USART2 或usart3 只要將0改成1或2即可
發送利用DMA發送數據調用這樣的函數即可
/**------------------------------------------------------- *
@函數名 __SZ_STM32_USART_DMAsenddata() *
@功能 面向用戶的STM32的USART的DMA初始化函數 *
@參數1 COM1 對應STM32的USART1 對應開啟中斷 *
COM2 對應STM32的USART2 對應開啟中斷 *
COM3 對應STM32的USART3 對應開啟中斷 *
@參數2 Data 發送的字符串數據 * @參數3 Size 發送的字符串大小 * @返回值 無***
------------------------------------------------------*/
void __SZ_STM32_USART_DMAsenddata(COM_TypeDef COM,unsigned char Data[],unsigned char Size);
接收利用USART1中斷接收數據
USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET) //總線空閑中斷
{
USART_ReceiveData(USART1); //讀DR,只有讀過一次,才能真正清除標志
USART_ClearFlag(USART1,USART_IT_IDLE); //讀SR其實就是清除標志
//添加用戶的處理程序
}
__SZ_STM32_USART_DMAsreceivedata(1);
}
2.問題:ADC1單通道和多連續通道的DMA配置整合?
配置一個ADC,往往涉及到引腳,DMA通道,中斷向量,接收發送的配置,RCC外設時鐘的配置?
只要一個函數
void SZ_STM32_ADC_Configuration(unsigned int l_ucchannelxx, u8 ADC1_SampleTime)
2個參數,一個通道,一個轉化速度,就能配置成功
例如:
SZ_STM32_ADC_Configuration( ADC1_CHANNEL_7 ,ADC_SampleTime_13Cycles5):
配置了開啟通道七,ADC_SampleTime_13Cycles5
由于開啟的是DMA的它采回來的值是自動放在數組里面的;
ADCConvertedValue[17]; 里面。
如果是單通道則放在數組的第一個如果是多通道則按照通道的順序依次放在數組里面;
3.問題:STM32 DA 的配置?
DA配置就2個通道,而且GPIO只要設置外設時鐘即可。
為了對付考試,所以調用
DA_init();
就默認都開啟
DA_addr=(uint32_t)DAC_BASE+0x20;/
DA_addr1=(uint32_t)DAC_BASE+0x08;
DA_addr2=(uint32_t)DAC_BASE+0x14;
然后對這兩個寄存器寫值就可以輸出DA了。
4.還有一些 LED 和按鍵的 參考神州三號的編程方式 用起來也比較方便
,需要的請自己下載。
0-stm32外設配置模塊函數積累by,jobszf.zip
(40.26 KB, 下載次數: 16)
2015-1-23 17:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|