我并不是想发起一场 HAL 圣战,我很好奇这段代码是否具有更高的功能。
\n在 STM32 设备上使用 GPIO 时,您需要使用 启用 GPIO 时钟__HAL_RCC_GPIOA_CLK_ENABLE()。进一步深入研究代码,我发现该函数到底在做什么,如下所示。据我所知,该代码唯一有用的部分是SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN);,其余部分似乎毫无用处。
我明白为什么 __IO uint32_t tmpreg;并且UNUSED(tmpreg);可以使用,但是这条线并tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN);没有真正做任何事情,所以这三个看起来毫无意义。我错过了什么吗?
#define __HAL_RCC_GPIOA_CLK_ENABLE() \xc2\xa0\\ \n do { \\\n __IO uint32_t tmpreg; \\\n\xc2\xa0 \xc2\xa0 SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN);\\ \n\xc2\xa0 \xc2\xa0 tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN);\\\n\xc2\xa0 \xc2\xa0 UNUSED(tmpreg); \\\n\xc2\xa0 \xc2\xa0 } while(0)\nRun Code Online (Sandbox Code Playgroud)\n设置位
\n#define SET_BIT(REG, BIT) \xc2\xa0 \xc2\xa0 ((REG) |= (BIT))\nRun Code Online (Sandbox Code Playgroud)\n读位
\n#define READ_BIT(REG, BIT) \xc2\xa0 \xc2\xa0((REG) & (BIT))\nRun Code Online (Sandbox Code Playgroud)\n没用过 …
我正在做一些测试,我有很多文件需要进行数据分析.我们的文件有一个命名约定,但有时会有人添加一些文件名.我正在寻找一种方法来寻找名称的"核心",然后保存整个文件名.
例如,我想找WIRA_Rabcd_RT,但有人可能已将文件名保存为RED_GREEN_BLUE_WIRA_Rabcd_RT.txt,所以我的文件夹看起来像这样:
RED_GREEN_BLUE_WIRB_Rabcd_RT.txt
RED_GREEN_BLUE_WIRC_Rabcd_RT.txt
RED_GREEN_BLUE_WIRA_Rabcd_RT.txt ? I want to find this file, and open it.
RED_GREEN_BLUE_WIRF_Rabcd_RT.txt
RED_GREEN_BLUE_WIRG_Rabcd_RT.txt
RED_GREEN_BLUE_WIRT_Rabcd_RT.txt
RED_GREEN_BLUE_WIRW_Rabcd_RT.txt
RED_GREEN_BLUE_WIRQ_Rabcd_RT.txt
Run Code Online (Sandbox Code Playgroud)