色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

keil+env在STM32H743上實現pwm呼吸燈

冬至子 ? 來源:瘋洋CrazySheep ? 作者:瘋洋CrazySheep ? 2023-06-07 15:08 ? 次閱讀

一、工具

keil+Env+STM32CubeMX

二、在Env中勾選本工程需要的pkgs

RT-Thread Components—->Device Drivers下勾選 Using hardware timer device drivers和Using PWM device drivers

1.jpg

2.jpg

勾選完成后保存、退出更新,再返回此界面查看是否已經更新好(勾好)

最后使用 scons —target=mdk5生成新的工程

會發現工程中多出了一個關鍵性的文件drv_pwm.c

1.jpg

三、修改配置文件

在 rtconfig.h 中可以查看 RT_USING_HWTIMER 和 RT_USING_PWM 的設備驅動宏定義。

1.jpg

stm32h7xx_hal_conf.h 頭文件查看是否已宏定義HAL_TIM_MODULE_ENABLED 和 HAL_PWR_MODULE_ENABLED,如果沒有自動配置則手動取消相關注釋打開并保存

1.jpg

在board.h 增加 #define BSP_USING_PWM3 和 #define BSP_USING_PWM3_CH4 宏定義,然后保存(會在drv_pwm.c中使用)

1.jpg

為什么要選擇TIM3的第4通道呢?因為此io(PB1)在正點原子stm32H743上連接了DS0(紅燈),方便我們看實驗

接下來,查看drv_pwm.c中TIM設備硬件驅動代碼

可以看到,PWM3已經被啟用

1.jpg

四、使用STM32CubeMX生成代碼

drv_pwm.c的static rt_err_t stm32_hw_pwm_init(struct stm32_pwm device) 中調用了 HAL_TIM_MspPostInit(TIM_HandleTypeDef htim) 這個函數,這樣就需要通過STM32Cube配置自動生成相關驅動代碼。

1.jpg

首先,找到工程下—->board—->CubeMX_Config文件夾下的CubeMX_Config.ioc文件

1.jpg

用管理員方式打開STM32CubeMX,再載入此ioc文件

1.jpg

配置TIM3 PWM CH4通道(即PB1)

1.jpg

2.jpg

3.jpg

1.jpg

修改完成后,點擊右上角GENERATE CODE,可能會下載許多文件,如果下載失敗,有可能是沒有用管理員方式運行,也有可能是連接未建立

可以這樣檢查一下

1.jpg

2.jpg

等下載完成后,可以看到Src文件夾多了一些文件,并且這些文件已經加入了工程,其中核心文件就是stm32h7xx_hal_msp.c,里面包含了前文提到的HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim) 這個函數

1.jpg

2.jpg

這里可以看一下其中我們用到的重要函數:

打開TIM3時鐘(初始化)

/**

@brief TIM_Base MSP Initialization

This function configures the hardware resources used in this example

@param htim_base: TIM_Base handle pointer

@retval None

*/

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)

{

if(htim_base->Instance==TIM3)

{

/* USER CODE BEGIN TIM3_MspInit 0 */

/* USER CODE END TIM3_MspInit 0 */

/* Peripheral clock enable */

__HAL_RCC_TIM3_CLK_ENABLE();

/* USER CODE BEGIN TIM3_MspInit 1 */

/* USER CODE END TIM3_MspInit 1 */

}

}

io初始化(drv_pwm.c中使用)

1.jpg

void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

if(htim->Instance==TIM3)

{

/* USER CODE BEGIN TIM3_MspPostInit 0 */

/* USER CODE END TIM3_MspPostInit 0 */

__HAL_RCC_GPIOB_CLK_ENABLE();

/**TIM3 GPIO Configuration

PB1 ------> TIM3_CH4

*/

GPIO_InitStruct.Pin = GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

/* USER CODE BEGIN TIM3_MspPostInit 1 */

/* USER CODE END TIM3_MspPostInit 1 */

}

}

解除配置(釋放資源)

/**

@brief TIM_Base MSP De-Initialization

This function freeze the hardware resources used in this example

@param htim_base: TIM_Base handle pointer

@retval None

*/

void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)

{

if(htim_base->Instance==TIM3)

{

/* USER CODE BEGIN TIM3_MspDeInit 0 */

/* USER CODE END TIM3_MspDeInit 0 */

/* Peripheral clock disable */

__HAL_RCC_TIM3_CLK_DISABLE();

/* USER CODE BEGIN TIM3_MspDeInit 1 */

/* USER CODE END TIM3_MspDeInit 1 */

}

}

四、跑pwm

到RT-Thread API參考手冊官網找到pwm_led.c例程,在之前的工程下建立pwm_led.c,復制代碼后保存,把文件加入工程,查看是否有警告(按理說現在沒有了)

1.jpg

但是編譯后出錯(小問題,而且按理說不應該出現該問題)

1.jpg

Error_Handler函數沒有實體,所以到STM32CubeMX生成的文件(main.c)中找到該函數并重新加入(main.h)文件中,再編譯后無誤。

1.jpg

下載到開發版,使用串口調用pwm_led_sample命令后,紅燈變為了呼吸燈。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5193

    瀏覽量

    214212
  • 呼吸燈
    +關注

    關注

    10

    文章

    110

    瀏覽量

    42769
  • RT-Thread
    +關注

    關注

    31

    文章

    1294

    瀏覽量

    40230
  • stm32cubemx
    +關注

    關注

    5

    文章

    283

    瀏覽量

    14836
  • HAL庫
    +關注

    關注

    1

    文章

    121

    瀏覽量

    6322
收藏 人收藏

    評論

    相關推薦

    keil+envSTM32H743實現pwm呼吸

    RT-Thread Components—->Device Drivers下勾選 Using hardware timer device drivers和Using PWM device drivers
    的頭像 發表于 09-15 16:26 ?1588次閱讀
    <b class='flag-5'>keil+env</b><b class='flag-5'>在</b><b class='flag-5'>STM32H743</b><b class='flag-5'>上</b><b class='flag-5'>實現</b><b class='flag-5'>pwm</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    使用STM32H743添加rtthread nano pack包會少board.h文件如何解決?

    使用STM32H743添加rtthread nano pack包會少board.h文件,使用stm32f1和f4的時候都沒有遇見過。 請問這種問題該如何解決。
    發表于 03-22 07:50

    stm32h743 keil5 HAL如何主動觸發死機?

    stm32h743 keil5 HAL庫 哪個函數接口(類似gcc 的__builtin_trap())可以主動觸發死機?
    發表于 04-07 06:21

    請問stm32h743 NC引腳如何連接?

    看了兩份官方stm32h743的官方評估版原理圖,一份部分NC引腳接地,另外一份NC引腳旁邊預留了接電源和地。 NC我理解就是NO CONNECT的意思,現在我的原理圖就差這個NC引腳不知道
    發表于 04-09 06:43

    STM32H743怎么FreeRTOS中移植canopen?

    STM32H743怎么FreeRTOS中移植canopen?
    發表于 07-03 06:32

    STM32H743芯片實現CAN通信

    1. 摘要本篇筆記主要介紹,STM32H743芯片實現CAN通信,封裝為BSP驅動,為之后實現CAN的高層通信打下基礎。2. 準備工作1
    發表于 08-20 07:41

    STM32H743 Flash用來存什么

    STM32H743 Flash用來存什么?STM32H743 Flash的硬件特性和基本操作是什么?
    發表于 09-24 09:41

    NUCLEO STM32H743怎么使用?

    NUCLEO STM32H743怎么使用?
    發表于 11-08 06:25

    為什么STM32H743的DMA中斷不起作用?

    2017 年夏天,我開始了一個 Nucleo 板使用STM32F767的項目,因為 H743 仍在發布但尚未上市。幾個星期以來,我得到了STM3
    發表于 02-08 06:44

    STM32H743芯片實現CAN通信的步驟

    本篇筆記主要介紹,STM32H743芯片實現CAN通信,封裝為BSP驅動,為之后實現CAN的高層通信打下基礎。
    的頭像 發表于 09-14 14:33 ?1.6w次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>STM32H743</b>芯片<b class='flag-5'>上</b><b class='flag-5'>實現</b>CAN通信的步驟

    RT-Thread文件系統組件STM32H743的應用

    RT-Thread(后文簡稱RT)提供的DFS組件、Fatfs組件和SDIO驅動組合起來可用于操作SD卡,但RT的底層驅動目前對STM32H743(后文簡稱H743)適配不是很好,stm32
    發表于 12-05 18:36 ?4次下載
    RT-Thread文件系統組件<b class='flag-5'>在</b><b class='flag-5'>STM32H743</b><b class='flag-5'>上</b>的應用

    stm32h743外部RAM非字節對齊訪問,引起的hard fault

    stm32h743外部RAM非字節對齊訪問,引起的hard fault
    發表于 12-09 09:21 ?5次下載
    <b class='flag-5'>stm32h743</b>外部RAM非字節對齊訪問,引起的hard fault

    STM32 使用PWM實現呼吸

    STM32 PWM實現呼吸使用STM32F103ZET6 定時器4 CH2通道產生
    發表于 12-24 19:41 ?55次下載
    <b class='flag-5'>STM32</b> 使用<b class='flag-5'>PWM</b><b class='flag-5'>實現</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    STM32cube實現STM32H743的USB驅動

    STM32cube實現STM32H743的USB驅動基于STM32cube實現STM32H743
    發表于 12-28 19:53 ?40次下載
    用<b class='flag-5'>STM32</b>cube<b class='flag-5'>實現</b><b class='flag-5'>STM32H743</b>的USB驅動

    stm32h743軟件模擬i2c驅動

    stm32h743 實現gpio模擬i2c資料分享
    發表于 12-01 11:12 ?7次下載
    主站蜘蛛池模板: 亚洲AV永久无码精品澳门| 九九这里有精品| 午夜啪啪免费视频| 浪荡受自我调教纯肉BL| 国产爱豆剧果冻传媒在线| 做暖免费观看日本| 亚洲AV久久无码精品九九软件| 欧美激情性AAAAA片欧美| 九九电影伦理片| 国产精品1区2区| yellow2019在线观看视频| 在线不卡日本v二区| 小草观看免费高清视频| 热99re久久精品国产首页| 久久综合给会久久狠狠狠| 国产亚洲精品久久无码98| 成人高清网站| 99久久久久精品国产免费麻豆 | 伊人久久综合热青草| 性派对xxxhd| 特级毛片s级全部免费| 日本不卡三卡四卡| 欧美日韩国产码在线| 免费欧美大片| 年轻的搜子8中字在线观看| 玖玖热视频一区二区人妻| 久草在线一免费新视频| 国产一区二区不卡老阿姨| 国产麻豆精品人妻无码A片| 国产成人久久精品激情| 国产成人mv 在线播放| 高H辣肉办公室| 国产69精品9999XXXX| 高跟丝袜岳第一次| 国产AV精品久久久免费看| 动漫美女禁区| 国产AV精品无码免费看| 国产91网站在线观看免费| 古装性艳史电影在线看| 囯产精品久久久久免费蜜桃 | 麻豆精品人妻一区二区三区蜜桃|