|
前言:采用模块编程,每个模块都有.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)
|
|