STM32Cube配置STM32U5Axxx芯片不生成GPDMA1初始化代码
<p>需要配置DMA配合TIM8定时器输出PWM的功能,配置完成后发现工具没有生成任何代码。</p><pre>
<code class="language-cpp">/**
* @brief GPDMA1 Initialization Function
* @param None
* @retval None
*/
static void MX_GPDMA1_Init(void)
{
/* USER CODE BEGIN GPDMA1_Init 0 */
/* USER CODE END GPDMA1_Init 0 */
/* Peripheral clock enable */
__HAL_RCC_GPDMA1_CLK_ENABLE();
/* GPDMA1 interrupt Init */
HAL_NVIC_SetPriority(GPDMA1_Channel0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(GPDMA1_Channel0_IRQn);
/* USER CODE BEGIN GPDMA1_Init 1 */
/* USER CODE END GPDMA1_Init 1 */
/* USER CODE BEGIN GPDMA1_Init 2 */
/* USER CODE END GPDMA1_Init 2 */
}
/**
* @brief ICACHE Initialization Function
* @param None
* @retval None
*/
static void MX_ICACHE_Init(void)
{
/* USER CODE BEGIN ICACHE_Init 0 */
/* USER CODE END ICACHE_Init 0 */
/* USER CODE BEGIN ICACHE_Init 1 */
/* USER CODE END ICACHE_Init 1 */
/** Enable instruction cache in 1-way (direct mapped cache)
*/
if (HAL_ICACHE_ConfigAssociativityMode(ICACHE_1WAY) != HAL_OK)
{
Error_Handler();
}
if (HAL_ICACHE_Enable() != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN ICACHE_Init 2 */
/* USER CODE END ICACHE_Init 2 */
}
/**
* @brief LPUART1 Initialization Function
* @param None
* @retval None
*/
static void MX_LPUART1_UART_Init(void)
{
/* USER CODE BEGIN LPUART1_Init 0 */
/* USER CODE END LPUART1_Init 0 */
/* USER CODE BEGIN LPUART1_Init 1 */
/* USER CODE END LPUART1_Init 1 */
hlpuart1.Instance = LPUART1;
hlpuart1.Init.BaudRate = 115200;
hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
hlpuart1.Init.StopBits = UART_STOPBITS_1;
hlpuart1.Init.Parity = UART_PARITY_NONE;
hlpuart1.Init.Mode = UART_MODE_TX_RX;
hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
if (HAL_UART_Init(&hlpuart1) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN LPUART1_Init 2 */
/* USER CODE END LPUART1_Init 2 */
}
/**
* @brief TIM8 Initialization Function
* @param None
* @retval None
*/
static void MX_TIM8_Init(void)
{
/* USER CODE BEGIN TIM8_Init 0 */
/* USER CODE END TIM8_Init 0 */
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
/* USER CODE BEGIN TIM8_Init 1 */
/* USER CODE END TIM8_Init 1 */
htim8.Instance = TIM8;
htim8.Init.Prescaler = 160-1;
htim8.Init.CounterMode = TIM_COUNTERMODE_UP;
htim8.Init.Period = 4999;
htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim8.Init.RepetitionCounter = 0;
htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_PWM_Init(&htim8) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
{
Error_Handler();
}
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
sBreakDeadTimeConfig.DeadTime = 0;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.BreakFilter = 0;
sBreakDeadTimeConfig.BreakAFMode = TIM_BREAK_AFMODE_INPUT;
sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
sBreakDeadTimeConfig.Break2Filter = 0;
sBreakDeadTimeConfig.Break2AFMode = TIM_BREAK_AFMODE_INPUT;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
if (HAL_TIMEx_ConfigBreakDeadTime(&htim8, &sBreakDeadTimeConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM8_Init 2 */
/* USER CODE END TIM8_Init 2 */
HAL_TIM_MspPostInit(&htim8);
}</code></pre>
<p>MX_TIM8_Init和MX_GPDMA1_Init都没有相关的任何代码。</p>
<p>又对LPUART1的DMA也进行了测试发现都没有任何关于DMA初始化代码,只是配置了三个变量。不知道是不是设置步骤有什么问题</p>
<pre>
<code class="language-cpp">TIM_HandleTypeDef htim8;
DMA_NodeTypeDef Node_GPDMA1_Channel0;
DMA_QListTypeDef List_GPDMA1_Channel0;
DMA_HandleTypeDef handle_GPDMA1_Channel0;</code></pre>
<p> </p>
<p>帮你呼叫下其他位测评网友:@lugl4313820 @怀揣少年梦 @慕容雪花 @damiaa @常见泽1 @2609 @chrisrh </p>
本帖最后由 怀揣少年梦 于 2024-2-5 14:22 编辑
<p>看参考手册,LPDMA1不支持定时器8;</p>
<p>如下图:固定请求</p>
<p> </p>
<p></p>
<p> 可编程触发:</p>
<p> </p>
<p>参考一下,大佬这篇配置</p>
<p><a href="https://bbs.eeworld.com.cn/thread-1267337-1-1.html">【STM32U599J-DK】基于touchGFX的ADC_GPDMA数字电压表 - stm32/stm8 - 电子工程世界-论坛 (eeworld.com.cn)</a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>我测试了一下,配置LPUART1,有LPDMA的初始化代码的</p>
怀揣少年梦 发表于 2024-2-5 14:28
我测试了一下,配置LPUART1,有LPDMA的初始化代码的
<div>谢谢你的回复。我的项目使用的是GPDMA不是LPDMA,不过的项目中也使用了LPUART和LPDMA,但也是没有代码。这是我的项目文件</div>
<p> </p>
<p>如果配置没有问题的话可能是软件的问题,我在完成定时器的配置后除了while 1里面没有需要手动添加的代码,我的CubeMAX版本</p>
<div style="text-align: center;"></div>
<p> </p>
<div class='shownolgin' data-isdigest='no'><p>我的版本是6.10.0,不知道是不是版本问题,这个版本是目前的最高版本了</p>
<p> </p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <div class='shownolgin' data-isdigest='no'>怀揣少年梦 发表于 2024-2-5 14:28
我测试了一下,配置LPUART1,有LPDMA的初始化代码的
<p>我看截图是LPDMA,我的STM32CubeMX是最新的版本,你更新一下,版本试试</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>https://bbs.eeworld.com.cn/thread-1271701-1-1.html 我写了一个示例,希望对您有帮助!</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'><p>好像可以生成代码吧。我用的是 STM32CubeIDE Version: 1.14.1</p>
<div style="background-color:#ffffff;padding:0px 0px 0px 0px;">
<div style="color:#000000;background-color:#ffffff;font-family:"Microsoft YaHei UI";font-size:9pt;white-space:pre-wrap;"> </div>
<div style="color:#000000;background-color:#ffffff;font-family:"Microsoft YaHei UI";font-size:9pt;white-space:pre-wrap;">具体没调试,只是试了一下乐意生成代码</div>
</div>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>damiaa 发表于 2024-2-5 21:12
好像可以生成代码吧。我用的是 STM32CubeIDE Version: 1.14.1
具体没调试,只是试 ...
<p>我照着你的设置,进行可设置,我的版本1.14.0,无论是STM32CubeIDE或者是STM32CUBeBOX,都是一样的</p>
<p> </p>
<p> </p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'><p>奇怪 。Tim8这里我是这样的,不知道你的是怎么样。两边的ch通道一样</p>
<p> </p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>damiaa 发表于 2024-2-6 11:57
奇怪 。Tim8这里我是这样的,不知道你的是怎么样。两边的ch通道一样
<p>你的引脚设置和我的不一样,我的是PC7 led1,你的是PC6 当然是TIM8_CH1</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'><p>感谢分享!感谢分享!感谢分享!感谢分享!感谢分享!感谢分享!感谢分享!</p>
</div><script>showreplylogin();</script>
页:
[1]