Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Hardfault
STM32F407
STM32F4使用CUBEMX生成DMA模式的DAC,运行出现Hardfault
发布于 2021-11-02 22:35:47 浏览:1722
订阅该版
代码 初始化TIM6代码 ```c TIM_HandleTypeDef mytim6; static void tim6_init(void) { TIM_MasterConfigTypeDef master_config = {0}; mytim6.Instance = TIM6; mytim6.Init.Prescaler = 1 - 1; mytim6.Init.Period = 3500; mytim6.Init.CounterMode = TIM_COUNTERMODE_UP; mytim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; HAL_TIM_Base_Init(&mytim6); master_config.MasterOutputTrigger = TIM_TRGO_UPDATE; master_config.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; HAL_TIMEx_MasterConfigSynchronization(&mytim6, &master_config); //HAL_TIM_Base_Start_IT(&mytim6); } ``` 初始化DAC,具体引脚,DMA模式都在MSPinit函数里 ```c DAC_HandleTypeDef *hdac1; extern DMA_HandleTypeDef hdma_dac1; static void dac_dma_config(void) { DAC_ChannelConfTypeDef *hdacch1_cfg; __HAL_RCC_DMA1_CLK_ENABLE(); HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 3, 0); HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn); hdac1->Instance = DAC1; HAL_DAC_Init(hdac1); hdacch1_cfg->DAC_Trigger = DAC_TRIGGER_T6_TRGO; hdacch1_cfg->DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE; HAL_DAC_ConfigChannel(hdac1, hdacch1_cfg, DAC_CHANNEL_1); } MSH_CMD_EXPORT(dac_dma_config, dac sample); ``` DMA模式,GPIO等初始化 ```c void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if (hdac->Instance == DAC) { /* USER CODE BEGIN DAC_MspInit 0 */ /* USER CODE END DAC_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_DAC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**DAC GPIO Configuration PA4 ------> DAC_OUT1 PA5 ------> DAC_OUT2 */ GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* USER CODE BEGIN DAC_MspInit 1 */ hdma_dac1.Instance = DMA1_Stream5; hdma_dac1.Init.Channel = DMA_CHANNEL_7; hdma_dac1.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_dac1.Init.PeriphInc = DMA_PINC_DISABLE; hdma_dac1.Init.MemInc = DMA_MINC_ENABLE; hdma_dac1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_dac1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_dac1.Init.Mode = DMA_CIRCULAR; hdma_dac1.Init.Priority = DMA_PRIORITY_HIGH; hdma_dac1.Init.FIFOMode = DMA_FIFOMODE_DISABLE; hdma_dac1.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_HALFFULL; hdma_dac1.Init.MemBurst = DMA_MBURST_SINGLE; hdma_dac1.Init.PeriphBurst = DMA_PBURST_SINGLE; HAL_DMA_Init(&hdma_dac1); __HAL_LINKDMA(hdac, DMA_Handle1, hdma_dac1); /* USER CODE END DAC_MspInit 1 */ } } ``` 以上代码基本都是CUBEMX生成后直接复制过来的 仅仅调用dac_dma_config()这个函数时就会报HardFault ![1.png](https://oss-club.rt-thread.org/uploads/20211102/8bbd24e3de15ba9db6d097cb7a2099b9.png) 通过Keil debug调试发现pc寄存器指向的地方在HAL_DAC_ConfigChannel这个函数里,我改了几下都没用,请问这到底是啥原因导致的? 还有如果这种方法确实无法使用,那么在RTThread DAC驱动中该如何修改才能使用DMA功能?仅用RTThread原有框架驱动下输出的DAC频率最高似乎只有200Hz左右
查看更多
RTT_逍遥
认证专家
2021-11-02
https://github.com/supperthomas
hi: hdac1 这个是一个指针: `DAC_HandleTypeDef *hdac1;` 没有进行初始化就使用了: ```c hdac1->Instance = DAC1; HAL_DAC_Init(hdac1); hdacch1_cfg->DAC_Trigger = DAC_TRIGGER_T6_TRGO; hdacch1_cfg->DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE; HAL_DAC_ConfigChannel(hdac1, hdacch1_cfg, DAC_CHANNEL_1); ```
3
个回答
默认排序
按发布时间排序
aozima
2021-11-02
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
hdac1没人赋值,是个空指针吧。
ZWH
2021-11-02
这个人很勤快,没空留下点什么
内存溢出了
撰写答案
登录
注册新账号
关注者
0
被浏览
1.7k
关于作者
Tourist
这家伙很懒,什么也没写!
提问
4
回答
3
被采纳
0
关注TA
发私信
相关问题
1
RTT1.0,STM32调试时会跑到HardFault【已解决】,出现新问题
2
新手请教关于hardfault怎么查
3
github最新版本库中stm32f0X分支,运行切换任务时候出现hardfault[已解决]
4
实现iap功能,bootloader使用了rtt操作系统,在跳转到app代码的时候提示出现hardfault的问题
5
ymodem在on_begin内发送can无法断开连接,而且RTT会报hardfault
6
挂载UFFS文件系统执行到退出_BuildTreeStepOne函数时hardfault异常
7
STM32F1+RTT串口接收中断进入hardfault
8
STM32F746NG随机进入hardfault(已解决)
9
[已解决]自已建了个STM32F103的MDK工程,初始化时总是进入HardFault,求教!
10
将 Cortex M3 的 hardfault 处理与 M4、M7、M0 保持一致?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
9
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
4
次点赞
Ghost_Girls
1
篇文章
7
次点赞
xiaorui
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部