enable_disable.h

本文介绍了Windows应用程序中消息处理函数WndProc和特定资源ID的宏定义,包括退出、测试及关于对话框的处理。通过宏定义实现了资源标识符的指定,并展示了两个回调函数的声明。

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #define IDM_EXIT           100
#define IDM_TEST           200
#define IDM_ABOUT          301

LRESULT CALLBACK WndProc  (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About    (HWND, UINT, WPARAM, LPARAM);

在STM32开发中,`ll_dma.h`和`hal_dma.h`是两个与DMA(直接内存访问)相关的重要头文件,它们的区别主要体现在抽象层级、代码风格和性能等方面。 ### 抽象层级 - **`hal_dma.h`**:属于HAL(硬件抽象层)库,提供了高级的、面向对象的接口,将底层硬件细节进行了封装,开发者可以通过调用简单的函数来完成复杂的DMA操作,无需深入了解硬件寄存器的具体配置,降低了开发难度,提高了开发效率,但也牺牲了一定的灵活性。 - **`ll_dma.h`**:属于LL(低层次)库,提供了接近硬件寄存器级别的操作接口,开发者需要对硬件寄存器有较深入的了解,能够更精细地控制DMA的行为,灵活性更高,但开发难度也相对较大。 ### 代码风格 - **`hal_dma.h`**:函数命名通常以`HAL_DMA_`开头,函数内部包含了较多的错误检查和状态管理代码,代码结构相对复杂,但更易于理解和维护。 - **`ll_dma.h`**:函数命名通常以`LL_DMA_`开头,函数实现更简洁,主要专注于对寄存器的直接操作,代码执行效率更高。 ### 性能 - **`hal_dma.h`**:由于封装了较多的硬件细节和错误检查,会带来一定的性能开销,对于一些对实时性要求较高的应用场景可能不太适用。 - **`ll_dma.h`**:直接操作寄存器,减少了不必要的开销,性能更优,适合对性能要求较高的应用场景。 ### 示例代码 下面是使用`hal_dma.h`和`ll_dma.h`进行DMA初始化的简单示例: #### 使用`hal_dma.h` ```c #include "stm32f4xx_hal.h" void HAL_DMA_Init(void) { DMA_HandleTypeDef hdma; __HAL_RCC_DMA1_CLK_ENABLE(); hdma.Instance = DMA1_Stream0; hdma.Init.Channel = DMA_CHANNEL_0; hdma.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma.Init.PeriphInc = DMA_PINC_DISABLE; hdma.Init.MemInc = DMA_MINC_ENABLE; hdma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; hdma.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma.Init.Mode = DMA_NORMAL; hdma.Init.Priority = DMA_PRIORITY_LOW; hdma.Init.FIFOMode = DMA_FIFOMODE_DISABLE; HAL_DMA_Init(&hdma); } ``` #### 使用`ll_dma.h` ```c #include "stm32f4xx_ll_dma.h" void LL_DMA_Init(void) { LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA1); LL_DMA_SetChannelSelection(DMA1, LL_DMA_STREAM_0, LL_DMA_CHANNEL_0); LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_STREAM_0, LL_DMA_DIRECTION_PERIPH_TO_MEMORY); LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_STREAM_0, LL_DMA_PERIPH_NOINCREMENT); LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_STREAM_0, LL_DMA_MEMORY_INCREMENT); LL_DMA_SetPeriphDataSize(DMA1, LL_DMA_STREAM_0, LL_DMA_PDATAALIGN_BYTE); LL_DMA_SetMemoryDataSize(DMA1, LL_DMA_STREAM_0, LL_DMA_MDATAALIGN_BYTE); LL_DMA_SetMode(DMA1, LL_DMA_STREAM_0, LL_DMA_MODE_NORMAL); LL_DMA_SetPriorityLevel(DMA1, LL_DMA_STREAM_0, LL_DMA_PRIORITY_LOW); LL_DMA_DisableFifoMode(DMA1, LL_DMA_STREAM_0); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值