ccd+ad+dma程序参考.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1025766910 QQ liu_fanyi ccd+ad+dma,已经成功出图像了。串口的那个函数我就不发了。不能直接下载到板子上,我就是挑有用的部分发上来了。函数太多,都发上来会混乱 主程序: #include common.h //#include HAL_ADC.h #include liu_adc.h #include uart.h #include HAL_GPIO.h #include dma.h //函数定义 void init_pwm(void); void delay(void); //全局变量 uint16 dma_r_m=0; uint8 video[21000];//[140][ROW]; //uint16 a[10000], *p=a, *q; /********************************************************************/ void main (void) { ? ?//初始化 ADC ??DisableInterrupts; ??LPLD_GPIO_Init(PORTA_BASE_PTR, 5, 0, 0, 0x9); ??LPLD_GPIO_Init(PORTE_BASE_PTR, 26, 0, 0, 0x9); ??LIU_ADC_Init(ADC0_BASE_PTR, MODE_8, 0); ??//使能中断 ??enable_irq(91); //GPIOE 向量号为 107. IRQ# is 107-16=91 ??EnableInterrupts; ??while(1){ ? ? ??} } dma.h: #ifndef __DMA_H__ #define __DMA_H__ #include common.h #include dma_channels.h #define ROW 160 /********************************************************************/ void dma_init (); /********************************************************************/ #endif /* __DMA_H__ */ dma.c: #include dma.h extern uint8 video[21000];//video[140][ROW]; void dma_init(){ ??SIM_SCGC6|=SIM_SCGC6_DMAMUX_MASK;//打开DMA多路复用器时钟 ??SIM_SCGC7|=SIM_SCGC7_DMA_MASK;//打开DMA模块时钟 ??DMAMUX_CHCFG0=DMAMUX_CHCFG_SOURCE(40);//DMA通道0对应40号DMA请求,即ADC0 ??DMA_TCD0_SADDR = (uint32_t)(ADC_R_REG(ADC0_BASE_PTR, 0)); ?? ??DMA_TCD0_SOFF = 0;//每次传送源地址不变 ??DMA_TCD0_CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(ROW);//当前主循环次数,采集点数 ??DMA_TCD0_BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(ROW);//起始主循环次数,采集点数 ??DMA_TCD0_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0);//源数据宽度8bit,目的数据宽度8bit ??DMA_TCD0_NBYTES_MLNO = DMA_NBYTES_MLNO_NBYTES(1);//每次读取一字节 ??DMA_TCD0_SLAST = 0;//主循环结束后源地址0回写tcd ??DMA_TCD0_DLASTSGA = 0; ??DMA_TCD0_DADDR=(uint32)video;//设置目的地址,video数组第一个元素 ??DMA_TCD0_DOFF=1;//每次写目的地址加1 ??DMA_TCD0_CSR= DMA_CSR_DREQ_MASK;//DMA通道0主循环结束后停止硬件请求 ??DMA_TCD0_CSR|=DMA_CSR_INTMAJOR_MASK;//使能DMA0中断 ??DMAMUX_CHCFG0|=DMAMUX_CHCFG_ENBL_MASK;//DMA通道0使能 ??//DMA_TCD0_CSR|=DMA_CSR_START_MASK; } liu_adc.c: #include common.h #i

文档评论(0)

jiulama + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档