Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GPIO
英飞凌Infineon
英飞凌XMC7200评测 - GPIO
发布于 2024-07-22 22:57:16 浏览:118
订阅该版
[tocm] ## 系统适配 RTthread bsp 已经适配了 XMC7200 开发板,我们获取代码生成工程即可运行系统了,BSP 的适配论坛已经有帖子详细的说明([免费测评 | 英飞凌XMC7200系列MCU在RT-Thread上的移植经验大公开!](https://club.rt-thread.org/ask/article/4e5abc98191c3747.html "免费测评 | 英飞凌XMC7200系列MCU在RT-Thread上的移植经验大公开!")),将编译的程序下载到板子中运行,在shell中输入任何字符就会触发hardfault,对应日志如下。 ```c \ | / - RT - Thread Operating System / | \ 5.2.0 build Jul 22 2024 21:46:16 2006 - 2024 Copyright by RT-Thread team msh >psr: 0x80000013 r00: 0x00000000 r01: 0x280054b0 r02: 0x00000000 r03: 0x00000000 r04: 0x00000003 r05: 0x280041e8 r06: 0xdeadbeef r07: 0xdeadbeef r08: 0xdeadbeef r09: 0xdeadbeef r10: 0xdeadbeef r11: 0xdeadbeef r12: 0x00000000 lr: 0x100801a5 pc: 0x00000000 hard fault on handler usage fault: SCB_CFSR_UFSR:0x02 INVSTATE ``` 根据上述的日志的LR和PC可以看出执行了空函数,从LR地址可以定位出异常函数的返回地址,debug 发现是因为用户中断处理函数指针数组的成员为NULL,在接收到串口数据的时候调用了空函数指针,本地在board 初始化的时候重新初始化了修复的该问题。 ```c bsp/Infineon/libraries/HAL_Drivers/drv_common.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bsp/Infineon/libraries/HAL_Drivers/drv_common.c b/bsp/Infineon/libraries/HAL_Drivers/drv_common.c index e81803fdb5..5a3a6f6c11 100644 --- a/bsp/Infineon/libraries/HAL_Drivers/drv_common.c +++ b/bsp/Infineon/libraries/HAL_Drivers/drv_common.c @@ -89,6 +89,8 @@ void rt_hw_us_delay(rt_uint32_t us) */ rt_weak void rt_hw_board_init() { + SystemIrqInit(); + cy_bsp_all_init(); /* systick init */ ``` ## GPIO 输出验证 开发板上自带三个用户LED,我们可以使用pin 驱动的接口去配置GPIO输出模式点灯。 ![led_gpio.jpg](https://oss-club.rt-thread.org/uploads/20240722/7651ad6878f64aa9bcd86d427a6aa738.jpg.webp) 编写如下测试代码,配置P16_1 为输出模式周期闪烁 ```c #include "drv_gpio.h" #define LED_PIN GET_PIN(16, 1) int main(void) { rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); for (;;) { rt_pin_write(LED_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_PIN, PIN_LOW); rt_thread_mdelay(500); } } ``` 运行后跟预期的一致周期闪烁。 ## GPIO 输入验证 板载有两个user button,我们可以使用该GPIO 读取按键状态。 ![user_butoon22966.jpg](https://oss-club.rt-thread.org/uploads/20240722/6cb62987c11bbb592a495e793dc03cfd.jpg.webp) ![2503.jpg](https://oss-club.rt-thread.org/uploads/20240722/a27cb9bb5badbb28b5a79312a59cc329.jpg.webp) 编写如下测试代码,配置P17_3 为输入模式,读取按键状态 ```c #include "drv_gpio.h" #define BTN2_PIN GET_PIN(17, 3) int main(void) { uint8_t btn2 = 1; rt_pin_mode(BTN2_PIN, PIN_MODE_INPUT); for (;;) { if(rt_pin_read(BTN2_PIN) != btn2) { btn2 = rt_pin_read(BTN2_PIN); rt_kprintf("btn2 %d\n",btn2); } rt_thread_mdelay(10); } } ``` 运行log 如下,案件的压下抬起动作可以被读取到。 ```c msh >btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 ``` ## GPIO 中断验证 我们在上述配置成输入的基础上添加中断配置,通过中断读取BTN2 的状态信息。 ```c #include "drv_gpio.h" #define BTN2_PIN GET_PIN(17, 3) void btn2_callback(void * args) { rt_kprintf("btn2 %d\n",rt_pin_read(BTN2_PIN)); } int main(void) { uint8_t btn2 = 1; rt_pin_mode(BTN2_PIN, PIN_MODE_INPUT); rt_pin_attach_irq(BTN2_PIN,PIN_IRQ_MODE_RISING_FALLING,btn2_callback,NULL); rt_pin_irq_enable(BTN2_PIN, 1); for (;;) { rt_thread_mdelay(10); } } ``` 在中断回调中打印按键状态,发现中断回调按照预期的被调用了。 ```c msh >btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 btn2 0 btn2 1 ```
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
andeyqi
这家伙很懒,什么也没写!
文章
7
回答
6
被采纳
0
关注TA
发私信
相关文章
1
drivers- pin
2
bsp 里面的drivers/gpio.c 少了一个功能
3
stm32f407移植RTT中gpio设备驱动问题
4
config PB4(NJTRST) to GPIO
5
RT-Thread的GPIO设备驱动问题
6
关于pin.c文件中语句可能出现的bug
7
RT-Thread学习笔记--线程创建与官方Pin设备驱动调用
8
【应用笔记】小白也能玩转RT-Thread之通用GPIO设备【官方出品
9
串口引脚定义中的GPIO_Pin_sources是社么意思?
10
RTT -GPIO 使用例程
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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总线
ART-Pi
FinSH
USB
文件系统
DMA
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
ota在线升级
WIZnet_W5500
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
中断
flashDB
socket
Debug
GD32
编译报错
msh
keil_MDK
at_device
rt_mq_消息队列_msg_queue
ulog
C++_cpp
SFUD
本月问答贡献
出出啊
1513
个答案
341
次被采纳
小小李sunny
1438
个答案
289
次被采纳
张世争
775
个答案
167
次被采纳
crystal266
546
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部