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