Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AB32VG1
开发板
测评
红外遥控接收测试(中科蓝讯 AB32VG1 RISC-V开发板模块评测任务)
发布于 2021-03-16 20:50:28 浏览:1547
订阅该版
![958b146e4d43446abd90f0535f5f65dc.jpeg](https://oss-club.rt-thread.org/uploads/20210316/c83b52389baa97329b7a0eea27fcab88.jpeg) ![aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvMzg4Njc0LzIwMTMwNy8zMDE3MjMzOC01Mjk3MjJlYzhjYjU0MWQ0OWFlMzEwNzdkZGY1NTZkZS54LXBuZw.png](https://oss-club.rt-thread.org/uploads/20210316/fe1a2219b186b6b51eeeb5bd50f2ba49.png) ![aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvMzg4Njc0LzIwMTMwNy8zMDE3MjQ0NC1hZGRmN2M2YjU0YzQ0MjM3OGE0YzlmYmZlZTlmNzJmZi54LXBuZw.png](https://oss-club.rt-thread.org/uploads/20210316/73945309a4acd9aed3a21065d9556eb7.png) ![aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvMzg4Njc0LzIwMTMwNy8zMDE3MjQ1NS03NGYxZjk2ZWM1YmQ0OWQ3YjkzODFiYTBjOWZhMzcxZi54LXBuZw.png](https://oss-club.rt-thread.org/uploads/20210316/7e1ad44913116dd4cfbfda3733b9bc31.png) ![aHR0cHM6Ly9pbWFnZXMwLmNuYmxvZ3MuY29tL2Jsb2cvMzg4Njc0LzIwMTMwNy8zMDE3MjQyOC00ZmRhMDczZTIzZjc0ZWM3OTQ2OGE5YjhjMTY1ZTE0ZS54LXBuZw.png](https://oss-club.rt-thread.org/uploads/20210316/ca1b30986bbf8baf064e685cc86cdbf8.png) `#include
#include "board.h" /***************************************************************************** * Module : Timer3 Capture Mapping选择列表 *****************************************************************************/ #define TMR3MAP_PA5 (1 << 4) //G1 capture mapping: PA5 #define TMR3MAP_PA6 (2 << 4) //G2 capture mapping: PA6 #define TMR3MAP_PB0 (3 << 4) //G3 capture mapping: PB0 #define TMR3MAP_PB1 (4 << 4) //G4 capture mapping: PB1 #define TMR3MAP_PE0 (5 << 4) //G5 capture mapping: PE0 #define TMR3MAP_PE5 (6 << 4) //G6 capture mapping: PE5 #define TMR3MAP_PE6 (7 << 4) //G7 capture mapping: PE6 #define IR_CAPTURE_PORT() {GPIOEDE |= BIT(6); GPIOEPU |= BIT(6); GPIOEDIR |= BIT(6);} #define IRRX_MAPPING IRMAP_PE6 #define TMR3CAP_MAPPING TMR3MAP_PE6 typedef struct { unsigned short cnt; //ir data bit counter unsigned short rpt_cnt; //ir repeat counter unsigned short addr; //address, inverted address Extended NEC: 16bits address unsigned short cmd; //command, inverted command } ir_cb_t; ir_cb_t ir_cb; #define TMR3_RCLK 1000 //xosc26m_div 1M //timer3 capture void irrx_isr(int vector, void *param)//中断服务函数 { unsigned long tmrcnt; if (TMR3CON & BIT(17)) { //timer1 capture interrupt TMR3CNT = TMR3CNT - TMR3CPT; tmrcnt = TMR3CPT; TMR3CPND = BIT(17); tmrcnt /= TMR3_RCLK; //convert to ms // rt_kprintf("ir: %2d\n",tmrcnt); } else if (TMR3CON & BIT(16)){ //timer1 overflow interrupt TMR3CPND = BIT(16); tmrcnt = 110; //110ms overflow } else { return; } //processing repeat code if (ir_cb.cnt == 32) { if ((tmrcnt >= 10) && (tmrcnt <= 12)) { //repeat code is simply 9ms+2.25ms ir_cb.rpt_cnt = 0; } else { ir_cb.rpt_cnt += tmrcnt; if (ir_cb.rpt_cnt > 108) { ir_cb.rpt_cnt = 0; ir_cb.cnt = 0; //ir key release } } return; } else if ((tmrcnt > 7) || (tmrcnt == 0)) { //A message is started by a 9ms AGC burst ir_cb.rpt_cnt = 0; ir_cb.cnt = 0; //ir key message started return; } ir_cb.cmd >>= 1; ir_cb.cnt++; if (tmrcnt == 2) { //Bit time of 1.125ms(0) or 2.25ms(1) ir_cb.cmd |= 0x8000; } if (ir_cb.cnt == 16) { ir_cb.addr = ir_cb.cmd; //save address data } else if (ir_cb.cnt == 32) { //got ir key message if ((unsigned char)ir_cb.cmd > 96) { ir_cb.cmd = 0; } rt_kprintf("ir: %04x, %02x\n",ir_cb.addr, (unsigned char)ir_cb.cmd); } } void timer3_init(void) { rt_hw_interrupt_install(IRQ_IRRX_VECTOR, irrx_isr, RT_NULL, "sw_ir_irq"); TMR3CNT = 0; TMR3PR = TMR3_RCLK*110 - 1; //110ms Timer overflow interrupt TMR3CON = BIT(8) | BIT(7) | BIT(5) | BIT(2) | BIT(1) | BIT(0); //capture & overflow interrupt enable, falling edge, Capture Mode } void irrx_sw_init(void) { IR_CAPTURE_PORT(); FUNCMCON2 = TMR3CAP_MAPPING; //tmr3 g6 PE5 rt_memset(&ir_cb, 0, sizeof(ir_cb)); timer3_init(); } ` ``` #include
#include "board.h" extern void irrx_sw_init(void); int main(void) { uint32_t cnt = 0; uint8_t pin = rt_pin_get("PE.1"); rt_pin_mode(pin, PIN_MODE_OUTPUT); rt_kprintf("Hello, world\n"); irrx_sw_init(); while (1) { if (cnt % 2 == 0) { rt_pin_write(pin, PIN_LOW); } else { rt_pin_write(pin, PIN_HIGH); } cnt++; rt_thread_mdelay(1000); } return 0; } ``` 使用感受: 1、RT-Thread操作系统进发性好,稳定性好,方便进行二次开发。 2、中科蓝讯 AB32VG1资料齐全度就仁者见仁智者见智,建议不接触过的朋友就要直接绕路吧。 3、很大一部分功能函数已封装到库,并且使用说明含糊,芯片说明文档差,差评。 4、红外接收,timer时钟来源不清楚,寄存器使用说明不清楚,这是深度挖掘芯片性能的拦路虎。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
gdutyang
这家伙很懒,什么也没写!
文章
2
回答
0
被采纳
0
关注TA
发私信
相关文章
1
支持smart的开发板有没有推荐?
2
ART PI可否在正点原子H750X核心板上稳定运行?
3
有哪些开发板接口可以支持以太网模块吗,或者开发板扩展接口可以支持以太网模块
4
STM32 L496的ali 开发板2块99元 包邮值得入手吗?
5
请问下rtt现在支持RK3328的开发板吗
6
有适合运行带网络协议栈的rt-smart的开发板吗?
7
[闲置开发板]请问大家有没有很多闲置的,吃灰的开发板呀?
8
K210购买指南求助
9
BES2700BP开发板或PDF规格书求购.
10
riscv32-elf-xmaker 工具的目的
推荐文章
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
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
289
次被采纳
张世争
809
个答案
175
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部