在main函数中编写如下代码进行点灯。 1/*2*Copyright(c)2006-2022,RT-ThreadDevelopmentTeam3*4*SPDX-License-Identifier:Apache-2.05*6*ChangeLogs:7*DateAuthorNotes8*2022-12-29RT-Threadfirstversion9*/10#include11#include12#include13/*定义LED引脚*/14#ifndefLED_B_PIN15#defineLED_B_PINGET_PIN(H,10...
其切换到逻辑一般在芯片启动后,执行的最初一段的汇编代码逻辑里面,一般芯片在上电后,都会进入最高特权权限的模式里,切换到操作系统特定的特权级别模式即可。 可以正常执行c代码 完成这一步也是汇编的代码的实现,这一步的通用关键操作是bss段清零,以及设置栈指针地址。 对于bss段清零的必要性是因为c语言的语法规则,...
STM32上I2C3_SCL在PA8,I2C_SDA在PC9,DRDY数据准备引脚在PG3,复位RSTN引脚在PG6,接着在CubeMX进行相应的配置。 之后我们可以看到我们在CubeMX中配置的东西实际上都在board文件之中,其中board.c文件里面为我们的时钟树配置,stm32f4xx_hal_msp.c里的就是我们上面设置的那些引脚配置 这里就是刚刚I2C3配置的函数,...
RT-Thread是一个可裁剪的系统,可以通过相应宏打开/关闭对象模块,所以这个值是根据最终对象类型种类确定的。 C语言知识:如果枚举类型的成员值没有具体指定,那么后一个值是在前一个成员值的基础上加1。 struct rt_object_information的内容如下: 其中,rt_list_t是一个双链表结点结构体,该结构体如下: 结构体数组(...
挂载文件系统的源代码位于qemu-vexpress-a9\applications\mnt.c中。在实际代码中会将块设备sd0中的文件系统挂载到根目录/上。 #include <rtthread.h> #ifdef RT_USING_DFS #include <dfs_fs.h> int mnt_init(void) { rt_thread_delay(RT_TICK_PER_SECOND); ...
static rt_thread_t led_thread = RT_NULL; void LedInit(void) { /* enable the LED GPIO clock */ rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_GPIOC); /* configure LED GPIO pin */ gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7 | GPIO_PIN...
把drv_gpio.c所实现的_stm32_pin_ops绑定在_hw_pin.ops上 因为PIN 设备驱动层使用的注册函数为: rt_device_pin_register("pin", &_stm32_pin_ops, RT_NULL); */_hw_pin.ops = ops; _hw_pin.parent.user_data = user_data;/* register a character device ...
代码清单:移植RTT-5 修改(1):在user目录下新建一个board.h头文件,用来包含固件库和BSP相关的头文件和存放board.c里面的函数声明,具体见 代码清单:移植RTT-6。代码清单:移植RTT-6 board.h文件内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #ifndef __BOARD_H__ ...
其实,上面刚创建好的工程已经包含了屏幕的显示输出驱动文件ls1x_fb.c和ls1x_fb.h(所在目录如图10所示),以及触摸输入驱动文件gt1151.c和gt1151.h(所在目录如图11所示)。但这里有个很纠结的问题就是,前者的显示输出驱动文件是针对横版屏幕(800×480)编写的,而后者的触摸输入驱动文件是针对竖版屏幕(480×800)编...
2)修改RTOS分组下的board.c上文件: 修改第24行为: #include "stm32f1xx_hal.h" 复制代码 修改第66行:取消注释,并加入2行代码如下。 1 2 3 4 5 6 7 8 9 10 11 12 13 voidSysTick_Handler(void) { /* enter interrupt */ rt_interrupt_enter(); ...