当前位置: 首页 > news >正文

北京怀柔网站制作如何制作小程序赚钱

北京怀柔网站制作,如何制作小程序赚钱,韩国网站建站,签了外包合同被辞退有补偿吗目录总线结构AHB-1 总线AHB-2 总线时钟与复位主要特性时钟结构功能描述时钟门控时钟自适应关断功能复位时钟分频寄存器描述寄存器列表软件时钟门控使能寄存器软件时钟掩码寄存器软件复位控制寄存器时钟分频配置寄存器调试控制寄存器I2S 时钟控制寄存器复位状态寄存器调试功能控… 目录总线结构AHB-1 总线AHB-2 总线时钟与复位主要特性时钟结构功能描述时钟门控时钟自适应关断功能复位时钟分频寄存器描述寄存器列表软件时钟门控使能寄存器软件时钟掩码寄存器软件复位控制寄存器时钟分频配置寄存器调试控制寄存器I2S 时钟控制寄存器复位状态寄存器调试功能控制参考时钟电路设计启动配置地址空间SRAMFlashQFlashSPI FlashPSRAM库函数wm_cpu.h函数参数宏wm_gpio_ex.h引脚复用相关宏wm_rcc.h时钟相关宏wm_it.h中断服务函数的声明Windows 10 20H2 HLK-W806-V1.0-KIT WM_SDK_W806_v0.6.0 摘自《W806 芯片设计指导书 V1.0》、《W806 MCU 芯片规格书 V2.0》 总线结构 这里没有找到W806的不过找到了与之差不多的W800的        W800 芯片由两级总线构成如下图所示 AHB-1 总线 本级总线有四个主设备-即 XT804DMAGPSEC 以及 5 个从设备。        XT804 是面向控制领域的 32 位高能效嵌入式 CPU 核 采用 16/32 位混合编码指令系统设计了精简高效的 3 级流水线。        XT804 提供多种可配置功能包括硬件浮点单元、片上高速缓存、DSP 加速单元、可信防护技术、片上紧耦合 IP 等用户可根据应用需要进行配置。此外XT804 提供多总线接口支持系统总线、指令总线、数据总线的灵活配置。XT804 针对中断响应做了特殊的加速中断响应延时仅需 13 个周期。        总线时钟最快工作在 240MHz 频率可以配置为 240/160/120/80/40MHz或更低。 AHB-2 总线 本条总线有 4 个主设备3 个从设备使用 crossbar 连接结构能够实现不同主设备对不同从设备的同时访问从而加大带宽。总线时钟最快工作在 40MHz 频率可以根据需要配置为更低。        各主设备采用固定优先级自上而下优先级递减。 时钟与复位 支持芯片时钟和复位系统的控制时钟控制包括时钟变频时钟关断以及自适应门控复位控制包括系统以及子模块的软复位控制。 主要特性 支持各模块时钟关断 支持部分模块时钟自适应关断 支持各模块软件复位 支持 CPU 频率设置 支持 ADC/DAC 回环测试 支持 I2S 时钟设置 时钟结构 这里没有找到W806的不过找到了与之差不多的W800的        W800 使用 24/40MHz 晶体作为 SoC 时钟源片内内置 1 个 DPLL 输出 480MHz供给CPU系统总线数据总线及 WiFi 系统使用片内另外内置 32.768KHZ RC 振荡器供 PMU 及 LCD 模块使用。时钟结构概括图如下图所示。 功能描述 时钟门控 通过配置时钟门控使能寄存器 CLK_GATE_EN 可以控制指定功能的时钟关断从而达到关断某一模块功能的目的。        为了提供固件对系统功耗控制的灵活性时钟与复位模块提供了系统内各模块的时钟门控功能。当关闭相应模块的时钟时该模块的数字逻辑与时钟树将停止工作能够降低系统的动态功耗。        具体各模块的开关对应寄存器 SW_CLKG_EN 的详细描述。 时钟自适应关断 芯片依据内部的某些状态的迁移自适应关断某些功能模块的时钟。        用户请不要更改配置否则可能会在配置 PMU 功能时导致系统异常。 功能复位 芯片提供了各子系统的软复位功能通过设置 SW_RST_CTRL 相应 BIT 为 0 可以达到子系统复位。        但是复位状态不会自动清除要恢复正常工作需将 SW_RST_CTRL 相应 BIT 位置 1。        软复位功能并不会复位 CPU 及 WatchDog。        该寄存器中对 APB/BUS1/BUS2(对应 APB 总线系统总线及数据总线)的复位操作不推荐会导致系统访问设备异常。 时钟分频 W800 系统采用 40MHz/24MHz 晶体作为系统时钟源系统内置 DPLL固定输出 480MHz 时钟作为全系统的时钟源如下图。        系统总线的时钟与 CPU 时钟一致数据总线的时钟固定为 WLAN 根时钟的 1/4。        WLAN 根时钟同时也是整个 WLAN 系统的时钟源头。        此模块中提供了设定 CPU 时钟与 WLAN 根时钟的功能供固件调节系统性能及功耗使用。        设置 SYS_CLK_DIV 寄存器的 BIT[7:0]可以调整 CPU 时钟分频系数。CPU 时钟分频的源时钟为 DPLL 的输出固定为 480MHz。CPU 时钟分频系数默认值为 6即 CPU 默认工作频率为 480MHz 的 6 分频即 80MHz。当需要调整 CPU 所需时钟时可以重新配置本参数。        CLK_PERI 时钟提供 SoC 系统中加密模块的运行时钟的根时钟以及某些接口的运行时钟的根时钟比如 PWM 接口I2S 接口Flash 接口时钟。此时钟也由 DPLL 输出的 480MHz 分频得出。正常工作情况下应固定为 3 分频得到 CLK_PERI 根时钟 160MHz。由 CLK_PERI 根时钟进行 2 分频4 分频得到80MHz 和 40MHz提供给加密模块和接口模块使用。        设置 SYS_CLK_DIV 寄存器的 BIT[15:8]可以调整 WLAN 时钟分频系数。默认分频因子为 3即对 DPLL的 480MHz 输出 3 分频得到 160MHz 时钟作为根节点时钟送给 WLANWLAN 再继续分频得到更为详细的低频时钟供 WLAN 系统使用。        注意如果希望 WLAN 系统正常工作WLAN 根时钟需要保持在 160MHz否则 WLAN 系统将失效。        当不需要 WLAN 系统工作的时候可以将 WLAN 根时钟降低降低系统动态功耗。        在改变系统时钟配置的时候需要注意系统总线与数据总线的比例需要维持在 M1其中 M 为整数最小为 1。在改变系统时钟配置时也需要同时更新寄存器 SYS_CLK_DIV 的 BIT [23:16], 设置正确的比例系数。否则访问数据总线将得到异常数据。        SYS_CLK_SEL 的[15:8]提供了设置 SAR_ADC 工作频率的分频因子以 40M 为时钟源进行分频。分频系数即为所配分频值。        SYS_CLK_SEL 的 BIT[4]为配置 RSA 模块核心运算的时钟频率选择可以选择 80MHz 或者 160MHz。        BIT[5]为配置 GPSEC 模块核心运算的时钟频率选择可以选择 80MHz 或者 160MHz。        BIT[6]为配置 FLASH 模块对外总线的时钟频率选择可以选择 40MHz 或者 80MHz。        当需要重新配置 cpu_clk_dividerwlan_clk_dividerbus2_syncdn_factorsdadc_fdiv 时需要置位 SYS_CLK_DIV 的 BIT[31]硬件自动更新上述四个参数到分频器然后清零 BIT[31]。        I2S_CLK_CTRL 提供了 I2S 模块的时钟配置功能。 寄存器描述 寄存器列表 软件时钟门控使能寄存器 软件时钟掩码寄存器 软件复位控制寄存器 时钟分频配置寄存器 调试控制寄存器 I2S 时钟控制寄存器 复位状态寄存器 调试功能控制 用户可以通过设置 DEBUG_CTRL 的值(SYS_CLK_SEL- BIT[16])来达到使能和禁用 JTAG 功能的目的。 参考时钟电路设计 芯片参考时钟选用 40MHz 频率用户根据实际产品需求选用不同温度等级、稳定度、负载电容值的晶体。晶体两端所接负载电容根据不同厂家晶体及频偏情况需要调整。        晶体摆放尽量靠近芯片走线尽量短并且远离干扰源时钟周围多地孔隔离。时钟下面各层禁止其它走线穿过防止干扰时钟源。 启动配置 W800 芯片上电后CPU 会启动执行 ROM 中的固件加载 Flash 中指定地址的用户 Image。ROM 固件在开始运行时会读取 BootMode(PA0)引脚根据引脚的信号判断进入启动状态        通常BootMode 引脚应该用于生产或者调试阶段。在生产阶段用户通过将 BootMode 引脚持续拉低 30ms 以上进入功能模式可以快速进行烧录 Flash 工作。        在产品返工或者维修的场景中在芯片未进入“最高安全等级”关于安全等级的描述请参考《WM_W800_ROM 功能简述》时可以通过该引脚进入功能模式擦除旧的 Image写入新的Image。        在调试阶段无论固件出现任何故障都可以通过将 BootMode 引脚持续拉低 30ms 以上进入串口下载功能烧录新的固件。 地址空间 这里没有找到W806的不过找到了与之差不多的W800的        XT804 支持 4G 存储空间如上图所示分为 6 个 block分别为代码区内存区片上外设片外存储区片外外设和系统外设区。根据需求w800 片内存储空间如图三所示映射到前三区。 SRAM W800 内置 288KB SRAM。其中 160KB 挂载一级 AHB 总线上128KB 挂载在二级 AHB 总线上。CPU等一级总线设备可以访问所有内存区域但是二级总线上的设备只能访问二级总线上 128KB 的内存。 Flash QFlash W800 内部集成 2MBytes QFlash。通过芯片内部集成 32KB cache 实现 XIP 方式在 QFlash 上执行程序。 程序运行过程中CPU 首先从 Cache 中读取指令当不能获取指令时以 8Bytes 一行的方式从QFlash 读取指令存入 Cache 内。因此当持续运行代码大小小于 32K 时CPU 将无需从 QFlash 读取指令此时 CPU 可以运行在更高的频率。上述方式为读取指令操作方式整个 Image 的 RO 段都会以这种方式操作。此过程用户无需干预。        QFlash 也可以存储数据当用户程序需要读写 QFlash 内数据时需要通过内置的 QFlash 控制器进行操作QFlash 提供了相应的地址、指令等寄存器来协助实现用户想要的操作。        用户需要注意的是程序进行读取或者写入数据时无需进行状态判断、等待等操作因为 QFlash 控制器本身会进行判断。当 QFlash 控制器返回时表明读取或者写入已经完成。 SPI Flash W800 芯片除了支持 6PIN 的 QFlash 接口之外内置 PIN未封装还支持低速 SPI 接口访问。该 SPI接口的最高工作频率可达 20MHz支持主从功能。 PSRAM W800 内置 SPI/QSPI 接口的 PSRAM 控制器支持外置最大容量 64Mb 的 PSRAM 设备访问提供总线方式的 PSRAM 读写擦操作。最高读写速度 80MHz。当存储容量需要扩充时可以使用片外 PSRAM 扩充代码存储空间或者数据存储空间。PSRAM 同样支持 XIP 方式执行程序CPU Cache 同样支持缓存PSRAM 中数据。 库函数 wm_cpu.h 函数 打开wm_cpu.h有如下的函数声明 void SystemClock_Config(uint32_t clk); //该函数用于设置CPU时钟如SystemClock_Config(CPU_CLK_160M); void SystemClock_Get(wm_sys_clk *sysclk); //这个函数用来获取CPU时钟HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority); void HAL_IncTick(void); uint32_t HAL_GetTick(void); void HAL_Delay(uint32_t Delay);void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t Priority); //设定中断优先级Priority为0~15的值值越小优先级越高。如HAL_NVIC_SetPriority(GPIOA_IRQn, 0); void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); //使能中断通道如HAL_NVIC_EnableIRQ(GPIOA_IRQn); void HAL_NVIC_DisableIRQ(IRQn_Type IRQn); //失能中断通道参数 结构体和枚举类型 enum CPU_CLK{CPU_CLK_240M 2,CPU_CLK_160M 3,CPU_CLK_80M 6,CPU_CLK_40M 12,CPU_CLK_2M 240, };typedef union {struct {uint32_t CPU: 8; /*! bit: 0.. 7 cpu clock divider */uint32_t WLAN: 8; /*! bit: 8.. 15 Wlan clock divider */uint32_t BUS2: 8; /*! bit: 16.. 23 clock dividing ratio of bus2 bus1 */uint32_t PD: 4; /*! bit: 24.. 27 peripheral divider */uint32_t RSV: 3; /*! bit: 28.. 30 Reserved */uint32_t DIV_EN: 1; /*! bit: 31 divide frequency enable */} b;uint32_t w; } clk_div_reg;typedef struct{uint32_t apbclk;uint32_t cpuclk;uint32_t wlanclk; }wm_sys_clk;typedef enum {HAL_TICK_FREQ_10HZ 10,HAL_TICK_FREQ_100HZ 100,HAL_TICK_FREQ_1KHZ 1000,HAL_TICK_FREQ_DEFAULT HAL_TICK_FREQ_1KHZ } HAL_TickFreqTypeDef;宏参数 /**BASE PLL CLOCK*/ #define W805_PLL_CLK_MHZ (480)#define UNIT_MHZ (1000000)宏 #define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) (IRQn_Type)0x00U)wm_gpio_ex.h引脚复用相关 宏 #define __AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__-AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-AF_S1, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__-AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-AF_S1, __IOPOSITION__); \SET_BIT(__HANDLE__-AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__-AF_SEL, __IOPOSITION__); \SET_BIT(__HANDLE__-AF_S1, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__) do{ \SET_BIT(__HANDLE__-AF_SEL, __IOPOSITION__); \SET_BIT(__HANDLE__-AF_S1, __IOPOSITION__); \SET_BIT(__HANDLE__-AF_S0, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT5(__HANDLE__, __IOPOSITION__) do{ \CLEAR_BIT(__HANDLE__-AF_SEL, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT6(__HANDLE__, __IOPOSITION__) do{ \CLEAR_BIT(__HANDLE__-AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-DIR, __IOPOSITION__); \SET_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-PULLDOWN_EN, __IOPOSITION__); \}while (0)#define __AFIO_REMAP_SET_OPT7(__HANDLE__, __IOPOSITION__) do{ \CLEAR_BIT(__HANDLE__-AF_SEL, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-DIR, __IOPOSITION__); \SET_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \CLEAR_BIT(__HANDLE__-PULLDOWN_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_SPI_CLK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_24)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_SPI_CS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_23)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_SPI_MISO(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_16)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_25)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_SPI_MOSI(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_26)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_UART0_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_27)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART0_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_28)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART0_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_21)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_29)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART0_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_22)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_30)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART1_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_31)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART1_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_16)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART1_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART1_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART2_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART2_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART2_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART2_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART3_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART3_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART3_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART3_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART4_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_8)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART4_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART4_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_5)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART4_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_6)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_UART5_TX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_08)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_18)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART5_RX(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \CLEAR_BIT(__HANDLE__-PULLUP_EN, __IOPOSITION__); \}while (0)#define __HAL_AFIO_REMAP_UART5_RTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_UART5_CTS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_ADC(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) \((__IOPOSITION__ GPIO_PIN_1) || (__IOPOSITION__ GPIO_PIN_2) || \(__IOPOSITION__ GPIO_PIN_3) || (__IOPOSITION__ GPIO_PIN_4))) \{ \__AFIO_REMAP_SET_OPT6(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM0(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM1(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM2(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_2)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_24)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM3(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_3)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_25)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_PWM4(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_16)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_26)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2C_SCL(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_20)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_I2C_SDA(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT2(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_19)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0) #define __HAL_AFIO_REMAP_TOUCH(__HANDLE__, __IOPOSITION__) do{ \if (((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_7)) || \((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_9)) || \((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_10)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_0)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_1)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_2)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_3)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_4)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_5)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_6)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_7)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_8)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_9)) || \((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_12)) || \((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_14)) || \((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_29))) \{ \if ((__HANDLE__ ! GPIOA) || (__IOPOSITION__ ! GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT7(GPIOA, GPIO_PIN_7); \} \__AFIO_REMAP_SET_OPT7(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_EXT_MCK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_MCK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT3(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_17)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_WS(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_1)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_9)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_13)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_CK(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_4)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_8)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_8)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_12)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_MOSI(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_0)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_14)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_I2S_MISO(__HANDLE__, __IOPOSITION__) do{ \if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_7)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_10)) \{ \__AFIO_REMAP_SET_OPT1(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOA) (__IOPOSITION__ GPIO_PIN_11)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \else if ((__HANDLE__ GPIOB) (__IOPOSITION__ GPIO_PIN_15)) \{ \__AFIO_REMAP_SET_OPT4(__HANDLE__, __IOPOSITION__); \} \}while (0)#define __HAL_AFIO_REMAP_SWJ_ENABLE do { \__AFIO_REMAP_SET_OPT1(GPIOA, GPIO_PIN_1); \__AFIO_REMAP_SET_OPT1(GPIOA, GPIO_PIN_4); \} while(0)#define __HAL_AFIO_REMAP_SWJ_DISABLE do { \__AFIO_REMAP_SET_OPT5(GPIOA, GPIO_PIN_1); \__AFIO_REMAP_SET_OPT5(GPIOA, GPIO_PIN_4); \} while(0) wm_rcc.h时钟相关 打开wm_rcc.h有如下宏 宏 #define RCC ((RCC_TypeDef *)RCC_BASE)#define __HAL_RCC_ALL_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_ALL)#define __HAL_RCC_SPI_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_LSPI)#define __HAL_RCC_SPI_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_LSPI)#define __HAL_RCC_PWM_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_PWM)#define __HAL_RCC_PWM_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_PWM)#define __HAL_RCC_ADC_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_ADC)#define __HAL_RCC_ADC_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_ADC)#define __HAL_RCC_GPIO_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_GPIO)#define __HAL_RCC_GPIO_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_GPIO)#define __HAL_RCC_UART0_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_UART0)#define __HAL_RCC_UART0_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_UART0)#define __HAL_RCC_UART1_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_UART1)#define __HAL_RCC_UART1_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_UART1)#define __HAL_RCC_UART2_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_UART2)#define __HAL_RCC_UART2_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_UART2)#define __HAL_RCC_UART3_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_UART3)#define __HAL_RCC_UART3_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_UART3)#define __HAL_RCC_UART4_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_UART4)#define __HAL_RCC_UART4_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_UART4)#define __HAL_RCC_UART5_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_UART5)#define __HAL_RCC_UART5_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_UART5)#define __HAL_RCC_TIM_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_TIMER)#define __HAL_RCC_TIM_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_TIMER)#define __HAL_RCC_I2C_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_I2C)#define __HAL_RCC_I2C_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_I2C)#define __HAL_RCC_TOUCH_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_TOUCH)#define __HAL_RCC_TOUCH_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_TOUCH)#define __HAL_RCC_DMA_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_DMA)#define __HAL_RCC_DMA_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_DMA)#define __HAL_RCC_I2S_CLK_ENABLE() SET_BIT(RCC-CLK_EN, RCC_CLK_EN_I2S)#define __HAL_RCC_I2S_CLK_DISABLE() CLEAR_BIT(RCC-CLK_EN, RCC_CLK_EN_I2S)wm_it.h中断服务函数的声明 #ifndef __WM_IT_H__ #define __WM_IT_H__void CORET_IRQHandler(void); void GPIOA_IRQHandler(void); void GPIOB_IRQHandler(void); void UART0_IRQHandler(void); void UART1_IRQHandler(void); void UART2_5_IRQHandler(void); void WDG_IRQHandler(void); void TIM0_5_IRQHandler(void); void ADC_IRQHandler(void); void PMU_IRQHandler(void); void TOUCH_IRQHandler(void); void I2S_IRQHandler(void); void DMA_Channel0_IRQHandler(void); void DMA_Channel1_IRQHandler(void); void DMA_Channel2_IRQHandler(void); void DMA_Channel3_IRQHandler(void); void DMA_Channel4_7_IRQHandler(void);#endif
http://www.sadfv.cn/news/67901/

相关文章:

  • 微信企业微网站设计师经常用的网站
  • 孝感网站开发优搏快互联网道路运输便民政务服务系统
  • 爱站网seo查询三明做网站
  • iis建设个人网站网站建立吸引人的策划活动
  • 怎么做投资网站不违法河南工程项目信息
  • 想招代理去什么网站开发网站步骤是
  • 阿里云服务器做网站安全吗公司logo设计图片素材
  • 百度搜索网站打开错误wordpress网站收录插件
  • 做网站页面大小多大如果快速做网站
  • 展会网站建设成都中企动力怎么样
  • 关键词查询网址小红书seo排名规则
  • 内网建设网站中国建筑集团2022招聘
  • 个人网站做导购要什么经营许可网站更新中
  • 网站建设及目标编程教育机构
  • 建设网站机构公司网站服务器租赁
  • 商城网站具体需求猪八戒网logo设计
  • 做政协网站的目的是什么威海网络营销
  • 建设网站五个步骤广州做贷款有什么网站
  • 化妆品网站设计模板北京装饰公司前十名
  • 网站建设业务员的话术潍坊专升本考试地点
  • 网站建设的细节处理wordpress多站点模式插件
  • 丹阳网站建设机构微信广告朋友圈投放
  • 建筑网站哪里找wordpress缩写是什么意思
  • 怎么在自己的电脑做网站国家外汇管理局网站怎么做报告
  • 做有支付系统的网站一般需要多少钱下载小程序
  • 番禺网站建设技术小清新网站设计
  • 宿迁网站建设企业黄页的含义是什么
  • 免费最新如何建设网站教程视频唯一做性视频的网站
  • 缙云网站建设用node和vue做的网站
  • c2c网站是什么Wordpress手机端显示不全