专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
DMA接收100个数据
2019-07-21 07:55
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
7031
7
1102
DMA接收100个数据,绿灯就会翻转一次,同时收到的数据会返回给串口。
注意:下完程序后,关机一次再验证,我用的是战舰103的。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
heixinhai
1楼-- · 2019-07-21 13:06
为何没人评论呢,难道是我做的不好?
加载中...
空
2楼-- · 2019-07-21 14:31
精彩回答 2 元偷偷看……
加载中...
空
3楼-- · 2019-07-21 17:02
回复【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;
}
加载中...
空
4楼-- · 2019-07-21 19:12
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);
加载中...
龙之谷
5楼-- · 2019-07-21 19:36
回复【2楼】heixinhai:
---------------------------------
功能相对单一,且偏冷门(DMA),所以可能需要的人少,再加上伸手党,评论就少了
有时间回去验证一下,个人对DMA有些抵触,感觉陌生,希望通过楼主程序学习一下,谢谢分享
当然了,顶一下是必须的
加载中...
yuzeyuan1
6楼-- · 2019-07-21 19:43
mark<>
加载中...
1
2
下一页
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
---------------------------------
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;
}
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);
---------------------------------
功能相对单一,且偏冷门(DMA),所以可能需要的人少,再加上伸手党,评论就少了
有时间回去验证一下,个人对DMA有些抵触,感觉陌生,希望通过楼主程序学习一下,谢谢分享
当然了,顶一下是必须的
一周热门 更多>