Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread活动
瑞萨_RA6M4
RA6M4+RT-Thread PWM驱动LED
发布于 2022-07-24 16:51:27 浏览:545
订阅该版
[tocm] # 前言 本文讲解如何使用RA6M4的硬件PWM来驱动板载LED。 # 基础 1. 我们先看一下芯片手册,板载LED是连接在P106上的,可以复用为GPT的GTIOC8B,如下图。 可以知道P106连接在了GPT168(也就是GPT8)的CH8上。 ![图片1.png](https://oss-club.rt-thread.org/uploads/20220724/5f1329e9affaea4b6944452a8a6019ec.png "图片1.png") ![图片2.png](https://oss-club.rt-thread.org/uploads/20220724/e6aeb2a01d7032bb5f700c239d3e8064.png.webp "图片2.png") 2. 知道了上面的信息,我们可以开始用RA Smart Configurator来配置端口为PWM模式了, 如下,新建一个PWM定时器。 ![图片3.png](https://oss-club.rt-thread.org/uploads/20220724/8837945b942199454de39f321ca577e2.png.webp "图片3.png") 3. 对新建的PWM生成器进行详细设置 ![图片4.png](https://oss-club.rt-thread.org/uploads/20220724/2fa313ebe2214d74bf8d8d6ecff304f9.png.webp "图片4.png") 4. 配置GPT8端口 如下需要配置GPT8为使能状态。 ![图片5.png](https://oss-club.rt-thread.org/uploads/20220724/51c2ed093f27b2b0e3ac210737ae7e37.png.webp "图片5.png") 5. 将P106端口配置为复用PWM模式 ![图片6.png](https://oss-club.rt-thread.org/uploads/20220724/fc9096a880f8328825dfe8f618e0ef0b.png.webp "图片6.png") 保存生成配置代码 6. 在RT-Thread Setting中使能GPT8 ![图片7.png](https://oss-club.rt-thread.org/uploads/20220724/d45c2559d07f53e65f64ac628a9eda2a.png.webp "图片7.png") 保存 # 编辑代码 代码如下: ```c /* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2022-06-13 hehung the first version */ #include "app_led.h" #include
#include
#include "hal_data.h" #define THREAD_STACK_SIZE_LED (4096U) #define THREAD_PRIORITY_LED (10U) #if (LED_DRIVER_MODE == LED_MODE_IO) #define LED3_PIN BSP_IO_PORT_01_PIN_06 #else #define LED_led_pwm_dev_NAME ("pwm8") /* PWM设备名称 */ #define LED_led_pwm_dev_CHANNEL (0) /* PWM通道 */ #define LED_PWM_PERIOD (1000U) #endif static rt_thread_t thread_led_hd = RT_NULL; static void Led_Thread_Entry(void *para); static void Led_Mngr(void); #if (LED_DRIVER_MODE == LED_MODE_IO) static void Led_OutputIo(void); #else static void Led_OutputPwm(void); #endif /* LED线程初始化函数 */ void Led_TaskCreate(void) { thread_led_hd = rt_thread_create("thread_led", Led_Thread_Entry, RT_NULL, THREAD_STACK_SIZE_LED, THREAD_PRIORITY_LED, 10); if (RT_NULL != thread_led_hd) { rt_thread_startup(thread_led_hd); } } /* LED任务入口 */ static void Led_Thread_Entry(void *para) { Led_Mngr(); } /* LED驱动函数 */ static void Led_Mngr(void) { #if (LED_DRIVER_MODE == LED_MODE_IO) Led_OutputIo(); #else Led_OutputPwm(); #endif } #if (LED_DRIVER_MODE == LED_MODE_IO) /* 普通IO控制LED闪烁 */ static void Led_OutputIo(void) { static rt_uint8_t pin_lvl = PIN_HIGH; while (1) { rt_pin_write(LED3_PIN, pin_lvl); /* 反转电平 */ pin_lvl ^= 1; rt_thread_mdelay(500); } } #else /* PWM控制LED闪烁 */ static void Led_OutputPwm(void) { rt_uint32_t led_pwm_pulse = 0; /* PWM占空比*/ rt_bool_t dir_flg = RT_FALSE; /* PWM脉冲宽度值的增减方向 */ /* PWM设备句柄 */ struct rt_device_pwm *led_pwm_dev; /* 查找设备 */ led_pwm_dev = (struct rt_device_pwm *)rt_device_find(LED_led_pwm_dev_NAME); if (led_pwm_dev == RT_NULL) { rt_kprintf("led pwm run failed! can't find %s device!\n", LED_led_pwm_dev_NAME); } /* 设置PWM周期和脉冲宽度默认值 */ rt_pwm_set(led_pwm_dev, LED_led_pwm_dev_CHANNEL, LED_PWM_PERIOD, led_pwm_pulse); /* 使能设备 */ rt_pwm_enable(led_pwm_dev, LED_led_pwm_dev_CHANNEL); while (1) { led_pwm_pulse = (dir_flg) ? (led_pwm_pulse - 50) : (led_pwm_pulse + 50); if (led_pwm_pulse >= LED_PWM_PERIOD) { dir_flg = RT_TRUE; } else if (0 == led_pwm_pulse) { dir_flg = RT_FALSE; } /* 设置PWM周期和脉冲宽度 */ rt_pwm_set(led_pwm_dev, LED_led_pwm_dev_CHANNEL, LED_PWM_PERIOD, led_pwm_pulse); rt_thread_mdelay(50); } } #endif ```
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
hehung
这家伙很懒,什么也没写!
文章
6
回答
0
被采纳
0
关注TA
发私信
相关文章
1
(苏州站)RT-Thread物联网开发者沙龙【已结束】
2
(成都站)RT-Thread物联网开发者沙龙
3
(深圳站)RT-Thread物联网开发者沙龙
4
(西安站)RT-Thread物联网开发者沙龙
5
成都站2018 RT-Thread开发者沙龙回顾及PPT下载
6
2018 RT-Thread物联网开发者沙龙(北京站)
7
2018 RT-Thread物联网开发者沙龙(南京站)
8
第十三届研电赛RT-Thread企业专项奖发布通知
9
RT-Thread应用作品征集大赛开始啦!
10
你的投票将决定RT-Thread官网应该优先准备的文档是哪些
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部