void HAL_JTAG_Set(uint8_t mode) { uint32_t temp; temp = mode; temp <<= 25; __HAL_RCC_AFIO_CLK_ENABLE(); MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWJ_CFG, temp) }基于STM32F407中的HAL库进行优化
时间: 2024-04-08 11:28:27 浏览: 166
在基于STM32F407和HAL库的开发环境中,您可以对`HAL_JTAG_Set`函数进行优化。以下是一个可能的优化版本:
```c
void HAL_JTAG_Set(uint8_t mode)
{
uint32_t temp;
temp = mode;
temp <<= SYSCFG_MEMRMP_OFFSET;
__HAL_RCC_SYSCFG_CLK_ENABLE();
MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWJ_CFG_Msk, temp);
}
```
在这个优化版本中,做了以下改进:
1. 使用宏定义`SYSCFG_MEMRMP_OFFSET`代替具体的位偏移值,以提高代码的可读性和可维护性。
2. 使用宏定义`__HAL_RCC_SYSCFG_CLK_ENABLE()`代替`__HAL_RCC_AFIO_CLK_ENABLE()`,以确保正确使能SYSCFG模块的时钟。
3. 使用宏定义`SYSCFG_MEMRMP_SWJ_CFG_Msk`代替具体的位掩码值,以提高代码的可读性和可维护性。
请注意,这只是一个可能的优化版本,并且具体的改进方法可能因应用需求和开发环境而有所不同。在进行优化时,建议参考相关文档和示例代码,并根据实际情况进行适当修改。
相关问题
void JTAG_Set(u8 mode) { u32 temp; temp=mode; temp<<=25; RCC->APB2ENR|=1<<0; AFIO->MAPR&=0XF8FFFFFF; AFIO->MAPR|=temp; }改为HAL库形式
在HAL库中,可以使用相应的函数来设置JTAG模式。以下是将该函数改写为HAL库形式的示例代码:
```c
void HAL_JTAG_Set(uint8_t mode)
{
uint32_t temp;
temp = mode;
temp <<= 25;
__HAL_RCC_AFIO_CLK_ENABLE();
MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, temp);
}
```
请注意,上述代码是基于HAL库的示例,并且假设已正确配置了相关的时钟和引脚功能。你可以根据实际情况进行修改和适配。
stm32f103c8t6在keil5软件中JTAG_Set(JTAG_SWD_DIABLE);对应的头文件是什么?
在Keil5中,可以使用STM32CubeMX来生成工程代码,并且自动生成相应的头文件。如果你已经使用了STM32CubeMX生成了代码,并且在代码中使用了JTAG_Set(JTAG_SWD_DISABLE)函数,那么对应的头文件应该是stm32f1xx_hal.h。
在这个头文件中,JTAG_Set函数的定义如下:
```c
HAL_StatusTypeDef HAL_JTAG_SetConfig(JTAG_HandleTypeDef *hjtag, uint32_t Config);
```
其中,第二个参数Config可以是以下值之一:
- JTAG_STM32_DISABLE:禁用JTAG和SWD
- JTAG_SW_ENABLE:仅启用SWD
- JTAG_SW_DISABLE:禁用SWD
因此,JTAG_Set(JTAG_SWD_DISABLE)对应的Config值应该是JTAG_SW_DISABLE。
阅读全文