OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3983|回复: 7

DMA接收100个数据

[复制链接]

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
发表于 2015-7-16 08:47:04 | 显示全部楼层 |阅读模式
  DMA接收100个数据,绿灯就会翻转一次,同时收到的数据会返回给串口。
  注意:下完程序后,关机一次再验证,我用的是战舰103的。

DMA_08.rar

853.41 KB, 下载次数: 325

战舰因我而精彩
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2014-1-11
在线时间
0 小时
 楼主| 发表于 2015-7-17 13:37:35 | 显示全部楼层
为何没人评论呢,难道是我做的不好?
战舰因我而精彩
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-6-2
在线时间
0 小时
发表于 2015-7-17 16:15:49 | 显示全部楼层
回复【2楼】heixinhai:
---------------------------------
我用的通道6,可以帮我看一下哪里错了吗
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-6-2
在线时间
0 小时
发表于 2015-7-17 16:17:30 | 显示全部楼层
回复【3楼】空:
---------------------------------
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar)
{
u32 DR_Base;
RCC->AHBENR|=1<<0; //????DMA1?±??
delay_ms(5); //????DMA?±?????¨
DR_Base=cpar;
DMA_CHx->CPAR=DR_Base;    //DMA1 ???è???· 
// DMA_CHx->CMAR=(u32)cmar;  //DMA1,?????÷???·
// DMA1_MEM_LEN=cndtr;       //±???DMA??????????
// DMA_CHx->CNDTR=cndtr;     //DMA1,??????????
DMA_CHx->CCR=0X00000000; //????
DMA_CHx->CCR|=0<<4;   //?????è??//
DMA_CHx->CCR|=0<<5;   //?????????·??×÷//
DMA_CHx->CCR|=0<<6;  //???è???··?????????
DMA_CHx->CCR|=1<<7;    //?????÷????????
DMA_CHx->CCR|=0<<8;    //???è?????í????8??
DMA_CHx->CCR|=0<<10;  //?????÷?????í??8??
DMA_CHx->CCR|=1<<12;      //??????????//
DMA_CHx->CCR|=0<<14;  //·??????÷???????÷????
DMA_CHx->CCR |= 1<<1;                         //???í???????? 
MY_NVIC_Init(2,2,DMA1_Channel5_IRQChannel,2);//×é2??×???????????

void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx,u32 cmar,u16 cndtr)
{
DMA_CHx->CCR&=~(1<<0);       //??±?DMA???? 
DMA1_Channel6->CPAR=(u32)&USART2->DR;     //DMA1 ???è???· 
DMA1_Channel6->CMAR=(u32)cmar;     //DMA1,?????÷???·
DMA1_MEM_LEN=cndtr;       //±???DMA??????????
DMA_CHx->CNDTR=DMA1_MEM_LEN;     //DMA1,??????????
DMA_CHx->CCR|=1<<0;          //????DMA????
}   
void DMA1_Channel6_IRQHandler(void)
{
 FlagofDmaTest = TRUE;
}
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-6-2
在线时间
0 小时
发表于 2015-7-17 16:20:47 | 显示全部楼层
volatile bool FlagofDmaTest;
u8 DmaTest[144];

int main(void)
{
Stm32_Clock_Init(9);      //?????±???è??
uart_init(72,100000);      //????????????115200  
uart2_init(72,100000);
delay_init(72);           //???±??????
LED_N_KEY_Init();      //????????LED??????????????
delay_ms(200);
  Encoder_Init2();          //?¨?±?÷3????±à???÷
  WM_Init_50hz_tim2(9999,143);//?¨?±?÷2?ú?ú2?·PWM   50HZ
PWM_Init(7199,0);            //?¨?±?÷4?ú?ú2?·PWM   10kh

delay_ms(10);
  JTAG_Set(JTAG_SWD_DISABLE);
  JTAG_Set(SWD_ENABLE);
CAN_Mode_Init(1,2,3,6,0);  //CAN??????,?¨????1000Kbps    
  Timer1_Init(49,7199);      //5MS??????????·???????
OLED_Init();
MYDMA_Config(DMA1_Channel6,(u32)&USART2->DR);
FlagofDmaTest = FALSE;

while(1)

USART2->CR3|=1<<6; //????????
FlagofDmaTest = FALSE;
MYDMA_Enable(DMA1_Channel6,(u8)DmaTest,144);
while(FlagofDmaTest == FALSE);
回复 支持 反对

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-17 17:16:33 | 显示全部楼层
回复【2楼】heixinhai:
---------------------------------
功能相对单一,且偏冷门(DMA),所以可能需要的人少,再加上伸手党,评论就少了

有时间回去验证一下,个人对DMA有些抵触,感觉陌生,希望通过楼主程序学习一下,谢谢分享

当然了,顶一下是必须的
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2015-7-18 08:11:25 | 显示全部楼层
mark<>
自在随心
回复 支持 反对

使用道具 举报

17

主题

170

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-7-8
在线时间
118 小时
发表于 2018-11-15 17:00:32 | 显示全部楼层
好的想法,dma是好的功能,尤其是搬运数据,不然cpu会很累的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 19:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表