资源简介
利用stm32F407单片机驱动线阵CCD传感器 -- tcd1304,其他型号stm32单片机稍作更改即可应用
代码片段和文件信息
#include “main.h“
extern __IO uint16_t aTxBuffer[CCDSize];
/* ADC1 - Input on Ch13 (PC3) - Triggered by TIM4 Ch4 - DMA2 Ch0 Stream0 */
void ADC1_conf()
{
ADC_InitTypeDef ADC_InitStructure;
ADC_CommonInitTypeDef ADC_CommonInitStructure;
DMA_InitTypeDef DMA_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* Clock DMA2 and ADC1 */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 ENABLE);
DMA_InitStructure.DMA_Channel = DMA_Channel_0; //通道0
DMA_InitStructure.DMA_PeripheralbaseAddr = (uint32_t)&ADC1->DR; //ADC1->DR 存AD转换的结果
DMA_InitStructure.DMA_Memory0baseAddr = (uint32_t)&aTxBuffer; //目的地址,就是准备发送的地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; //指定DMA的方向-->外设到内存
DMA_InitStructure.DMA_BufferSize = CCDSize; //大小就是CCD数据的大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址不自增
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址自增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; // 指定DMA外设数据宽度
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;// 指定DMA内存数据宽度
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; // 循环模式,要传输的数据项的数目在数据
//流配置阶段自动用设置的初始值进行加载并继续响应 DMA 请求。
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; //软件在处理一个存储器区域的同时, DMA 传输还可以填充/使用第二个存储器区域。
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; //传输20字节 如果你设置FIFO 为DMA_FIFOThreshold_Full那么,中间会发生2次传输,一次16字节,一次4字节。
//如果你设置FIFO 为DMA_FIFOThreshold_HalfFull那么,中间会发生3次传输,一次8字节,一次8字节,一次4字节。
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; //内存突发传输每次转移一个数据
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//外设突发传输每次转移一个数据
DMA_Init(DMA2_Stream0 &DMA_InitStructure);
DMA_Cmd(DMA2_Stream0 ENABLE);
/* DMA2 interrupt configuration */
// DMA_ITConfig(DMA2_Stream0 DMA_IT_TC | DMA_IT_HT ENABLE);
DMA_ITConfig(DMA2_Stream0 DMA_IT_TC ENABLE);
/* Configure ADC1 Channel13 pin (PC3) as analog input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOC &GPIO_InitStructure);
/* ADC1 Init */
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInit(&ADC_CommonInitStructure);
/* ADC1 Init - TIM4 Ch4 is used as external trigger */
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrig
- 上一篇:list.h文件
- 下一篇:stm32+esp8266
相关资源
- 基于STM32F4x9的LCD显示
- 基于可编程的二相线阵CCD驱动电路设
- stm32F4+w5300
- 基于FPGA的彩色线阵CCD图像采集系统设
- FreeModbus_Slave+STM32F407+USART2代码亲测可
- STM32F407 串口配置 串口1~6 六串口同时
- STM32F407_6个串口同时使用的代码
- STM32F407实时时钟_DS1302实时时钟模块和
- STM32F429内部FLASH读写程序
- stm32f407读写flash的demo,基于正点原子
- STM32F4x7_ETH_LwIP_V1.0.0
- 基于STM32F407的视频采集与传输系统设
- W5500Test-20180314.7z
- STM32F407ZG_ESP8266例程
- Keil5下的STM32F407程序
- zw_OLED-STM32F4-IIC.zip
- USART基于hal库stm32f407串口通讯.rar
- STM32F4基于HAL库的LCD显示实验
- stm32f4+ov5640颜色识别.zip
- 完整的STM32F407_MODBUS通信工程代码。
- STM32指针式时钟工程项目
- stm32f4简易声音存储录放3秒存放
- stm32f407和摇杆制作的控制手柄代码
- STM32F407. 基于PID速度环的步进电机速度
- STM32F407 基于232或485的57&42;步进电机旋
- stm32f4 摄像头颜色识别
- 基于stm32F4的tcs3200程序
- stm32f4控制步进电机程序
- STM32F407与OV2640的二维码识别实验
- PCA9685驱动16舵机电机调速STM32F4代码
评论
共有 条评论