bigbat 发表于 2024-2-4 12:13

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(&amp;hlpuart1) != HAL_OK)
{
    Error_Handler();
}
if (HAL_UARTEx_SetTxFifoThreshold(&amp;hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
{
    Error_Handler();
}
if (HAL_UARTEx_SetRxFifoThreshold(&amp;hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
{
    Error_Handler();
}
if (HAL_UARTEx_DisableFifoMode(&amp;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(&amp;htim8) != HAL_OK)
{
    Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&amp;htim8, &amp;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(&amp;htim8, &amp;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(&amp;htim8, &amp;sBreakDeadTimeConfig) != HAL_OK)
{
    Error_Handler();
}
/* USER CODE BEGIN TIM8_Init 2 */

/* USER CODE END TIM8_Init 2 */
HAL_TIM_MspPostInit(&amp;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> &nbsp;</p>

okhxyyo 发表于 2024-2-5 14:09

<p>帮你呼叫下其他位测评网友:@lugl4313820 &nbsp;&nbsp;&nbsp; @怀揣少年梦 &nbsp; @慕容雪花 &nbsp; @damiaa &nbsp; @常见泽1 &nbsp; @2609 &nbsp; @chrisrh &nbsp;&nbsp;</p>

怀揣少年梦 发表于 2024-2-5 14:21

本帖最后由 怀揣少年梦 于 2024-2-5 14:22 编辑

<p>看参考手册,LPDMA1不支持定时器8;</p>

<p>如下图:固定请求</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp;可编程触发:</p>

<p> &nbsp;</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>

怀揣少年梦 发表于 2024-2-5 14:28

<p> &nbsp;</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>我测试了一下,配置LPUART1,有LPDMA的初始化代码的</p>

bigbat 发表于 2024-2-5 17:14

怀揣少年梦 发表于 2024-2-5 14:28
&nbsp;

&nbsp;

&nbsp;

&nbsp;

我测试了一下,配置LPUART1,有LPDMA的初始化代码的

<div>谢谢你的回复。我的项目使用的是GPDMA不是LPDMA,不过的项目中也使用了LPUART和LPDMA,但也是没有代码。这是我的项目文件</div>

<p> &nbsp;</p>

2609 发表于 2024-2-5 17:39

<p>如果配置没有问题的话可能是软件的问题,我在完成定时器的配置后除了while 1里面没有需要手动添加的代码,我的CubeMAX版本</p>

<div style="text-align: center;"></div>

<p>&nbsp;</p>

bigbat 发表于 2024-2-5 17:51

<div class='shownolgin' data-isdigest='no'><p>我的版本是6.10.0,不知道是不是版本问题,这个版本是目前的最高版本了</p>

<p> &nbsp;</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>

怀揣少年梦 发表于 2024-2-5 19:25

<div class='shownolgin' data-isdigest='no'>怀揣少年梦 发表于 2024-2-5 14:28
&nbsp;

&nbsp;

&nbsp;

&nbsp;

我测试了一下,配置LPUART1,有LPDMA的初始化代码的

<p>我看截图是LPDMA,我的STM32CubeMX是最新的版本,你更新一下,版本试试</p>
</div><script>showreplylogin();</script>

lugl4313820 发表于 2024-2-5 19:51

<div class='shownolgin' data-isdigest='no'>https://bbs.eeworld.com.cn/thread-1271701-1-1.html 我写了一个示例,希望对您有帮助!</div><script>showreplylogin();</script>

damiaa 发表于 2024-2-5 21:12

<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:&quot;Microsoft YaHei UI&quot;;font-size:9pt;white-space:pre-wrap;"> &nbsp; &nbsp;</div>

<div style="color:#000000;background-color:#ffffff;font-family:&quot;Microsoft YaHei UI&quot;;font-size:9pt;white-space:pre-wrap;">具体没调试,只是试了一下乐意生成代码</div>
</div>
</div><script>showreplylogin();</script>

bigbat 发表于 2024-2-5 21:49

<div class='shownolgin' data-isdigest='no'>damiaa 发表于 2024-2-5 21:12
好像可以生成代码吧。我用的是 STM32CubeIDE Version: 1.14.1


&nbsp; &nbsp;

具体没调试,只是试 ...

<p>我照着你的设置,进行可设置,我的版本1.14.0,无论是STM32CubeIDE或者是STM32CUBeBOX,都是一样的</p>

<p> &nbsp;</p>

<p>&nbsp;</p>
</div><script>showreplylogin();</script>

damiaa 发表于 2024-2-6 11:57

<div class='shownolgin' data-isdigest='no'><p>奇怪 。Tim8这里我是这样的,不知道你的是怎么样。两边的ch通道一样</p>

<p> &nbsp;</p>
</div><script>showreplylogin();</script>

bigbat 发表于 2024-2-6 12:22

<div class='shownolgin' data-isdigest='no'>damiaa 发表于 2024-2-6 11:57
奇怪 。Tim8这里我是这样的,不知道你的是怎么样。两边的ch通道一样

&nbsp;

<p>你的引脚设置和我的不一样,我的是PC7 led1,你的是PC6 当然是TIM8_CH1</p>
</div><script>showreplylogin();</script>

q1233 发表于 2024-7-26 11:00

<div class='shownolgin' data-isdigest='no'><p>感谢分享!感谢分享!感谢分享!感谢分享!感谢分享!感谢分享!感谢分享!</p>
</div><script>showreplylogin();</script>
页: [1]
查看完整版本: STM32Cube配置STM32U5Axxx芯片不生成GPDMA1初始化代码