2019年1月22日
摘要:
一 延时函数: rt_thread_delay(t) //调用时进入系统调度。 rt_kprintf()函数在kservice.c中实现,如果不使用设备驱动,则由自定义函数void rt_hw_console_output(const char *str)实现。前提是在rt_hw_board_ini
阅读全文
posted @ 2019-01-22 16:52
杰瑞鼠
阅读(538)
推荐(0)
摘要:
HAL库驱动中,由于某些外设的驱动需要使用超时判断(比如I2C、SPI、SDIO等),需要精确延时(精度为1ms),使用的是SysTick,但是在操作系统里面,我们需要使用SysTick来提供系统时基,那么就冲突了,怎么办?答案是利用DWT重新编写HAL库的相关延时和超时函数HAL_InitTick
阅读全文
posted @ 2019-01-22 16:38
杰瑞鼠
阅读(2125)
推荐(0)
2019年1月21日
摘要:
Keil MDK通过Configuration Wizard功能实现了头文件的可视化配置,这是一种基于特殊注释语法的图形化配置系统. 参考:《keil的Use Configuration Wizard in Context Menu功能》 在xxx.h头文件的代码中夹杂的“<h> </h>”、“
阅读全文
posted @ 2019-01-21 18:50
杰瑞鼠
阅读(860)
推荐(1)
2019年1月17日
摘要:
一 根据相近型号的demo BSP进行修改制作自己的BSP,可以参考RT-Thread官方bsp的配置教程视频,STM32系列BSP制作教程.md 项目需要修改的内容说明 CubeMX_Config (文件夹) CubeMX 工程:芯片型号,时钟源,下载方式,使能串口外设(只需要,为何?),配置时钟
阅读全文
posted @ 2019-01-17 00:18
杰瑞鼠
阅读(1600)
推荐(0)
2019年1月15日
摘要:
IO设备驱动架构: 一 在驱动开发阶段: 通过静态或动态方法创建设备,对应的有销毁设备rt_device_t rt_device_create(int type, int attach_size);/void rt_device_destroy(rt_device_t device); 通过注册函数
阅读全文
posted @ 2019-01-15 15:17
杰瑞鼠
阅读(1884)
推荐(0)
摘要:
I2C主从结构(可以有多个主机,但同一时间只能有一个):I2C有两种地址结构7位/10位 总线空闲时,SDA 和 SCL 都处于高电平状态。 开始信号: SCL 为高电平时,主机将 SDA 拉低 结束信号: 在 SDA 为低电平时,主机将 SCL 拉高并保持高电平,然后在将 SDA 拉高,表示传输结
阅读全文
posted @ 2019-01-15 15:03
杰瑞鼠
阅读(1348)
推荐(0)
摘要:
硬件定时器可以对外部时钟进行计数,利用内部时钟进行定时。 rt_size_t rt_device_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size); 硬件定时器设备支持的命令控制字如下所示: HWTIME
阅读全文
posted @ 2019-01-15 14:47
杰瑞鼠
阅读(1081)
推荐(0)
摘要:
SPI全双工设备的操作分为主设备和从设备(可以多个,多线程下从设备访问主设备要先获得总线控制权) rt_device_t rt_device_find(const char* name);查找设备 struct rt_spi_message *rt_spi_transfer_message(stru
阅读全文
posted @ 2019-01-15 12:00
杰瑞鼠
阅读(1215)
推荐(0)
摘要:
这里将PWM当成一个设备:PWM简介 上图是一个简单的 PWM 原理示意图,假定定时器工作模式为向上计数,当计数值小于阈值时,则输出一种电平状态,比如高电平,当计数值大于阈值时则输出相反的电平状态,比如低电平。当计数值达到最大值是,计数器从0开始重新计数,又回到最初的电平状态。高电平持续时间(脉冲宽
阅读全文
posted @ 2019-01-15 11:32
杰瑞鼠
阅读(898)
推荐(0)
摘要:
有一般收发、中断方式、DMA方式:
阅读全文
posted @ 2019-01-15 11:10
杰瑞鼠
阅读(2326)
推荐(0)