完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我遇到的问题是无法在输入捕获事件上配置DMA以正常工作,数据不能传输并发生错误。
static void my_TIM2_initInputCaptureTimer(void) { DMA配置: static void my_DMA_init(void) { 中断例程:
(STM32h743zi-nucleo board)预期行为:(当你按下用户按钮(蓝色的那个) - > PG0引脚得到SET(1)状态 - >所以输入捕获引脚(PA5,它们应该通过跳线连接)得到低 - 高当你释放按钮时,转换并捕获第一个值(通过com-port输出),输入捕获引脚获得高 - 低转换并捕获另一个值(通过com-port输出),但这些事件都没有启动DMA请求。 |
|
相关推荐
1个回答
|
|
DMA已正确初始化。问题是:缓冲区阵列没有初始化到任何SRAM存储区,所以当DMA试图通过AHB到达该存储器时(不可能)DMA崩溃并出现错误并设置TEI_flag(传输错误中断)。
使这项工作更容易的方式(显然这不是正确的方法,但为了熟人的目的,它的工作原理) #define Destination_Address ((unsigned int)0x30000000) DMA1_Stream0->M0AR = Destination_Address; 0x30000000 -> 是SRAM1内存的边界 你需要先启用SRAM1 2 3: static void my_SRAM_init(void) { // activate SRAM123 RCC->AHB2ENR |= (0x7 << 29); } 你可以通过以下方式到达该地区 uint32_t *Ptr_Dest = (uint32_t *)Destination_Address; printf("buffer: %lu %lu rn", *Ptr_Dest, *(Ptr_Dest + 1)); 对于那些不起作用或一些UB发生的原因: 缓存(启用缓存可能会损坏数据) 您的地址应与PSIZE和MSIZE对齐 示例:如果您的MSIZE和PSIZE是32位地址,则必须以0x4结尾 |
|
1 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:58 , Processed in 0.720202 second(s), Total 85, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号