随笔分类 - 嵌入式编程
摘要:芯片:stm32G070RB 系统版本:rt-thread 4.1.1 首先必须禁用HSE,默认clk初始化仅开启HSI就没问题,此处无需修改, 如果使用hal库函数直接驱动PF0和PF1是没问题的,读取也没问题 问题出在drv_gpio.c中 因为stm32G070RB芯片没有PE口,而晶振引脚作
阅读全文
摘要:芯片:STM32F407芯片 rtt版本:5.1.0 STM32F407 有两块内存 0x20000000 开始128K 0x10000000 开始64K 首先 配置内存管理,方式使用Use memheap objects as heap 然后在board.h中增加RAM2的定义如下 /* ROM/
阅读全文
摘要:芯片是STM32L031G6U6,芯片没有外部晶振引脚,想要高精度时钟只能通过PA0输入外部时钟,选用有源晶振8MHz 按照CubeMX生产的初始化时钟函数后发现启动不了,必须用HSI才行,仿真发现卡死在ADC校准函数 HAL_ADCEx_Calibration_Start(&stm32_adc_o
阅读全文
摘要:STM32L431 的LPUART1 是低功耗串口,使用LSE或LSI时最大支持9600波特率,大于此波特率需要用PCLK1或SYSCLK,同时如果选择用PCLK1或SYSCLK时波特率必须大于9600,否则初始化会失败 if (HAL_UART_Init(&uart->handle) != HAL
阅读全文
摘要:使用hwtimer可以提高定时精度和us级定时,配合回调函数和信号量也不用担心系统自带的us延迟函数 void rt_hw_us_delay(rt_uint32_t us)造成的阻塞问题 芯片:stm32g070 使用hwtimer需要改动的地方如下 board.h中打开timer的相关宏定义,比如
阅读全文
摘要:在老的rt-thread 版本系统pm组件调试ok,后来使用4.1.1版本时发现进入低功耗后无法正常唤醒,问题解决路径如下 硬件信息:cpu STM32L431CCT6 新建系统打开pm组件后也没有drv_pm.c和drv_lptim.c自动添加,需要到系统目下找到并复制到driver目录下 C:\
阅读全文
摘要:硬件信息 单片机 STM32L431CCT6 4G模组 EC800K-CN rtt版本:4.1.1 第一个问题 主频太低不行,比如使用外部晶振8M时会发现at命令的返回收到的数据不完整,是由于处理器太慢和rt-thread 系统处理工作较多导致,测试发现至少16M主频以上才能良好运行 第二个问题 频
阅读全文
摘要:添加rtc组件步骤, 系统版本4.1.1 1.rt-thread settings中添加rtc 2.board.h中打开rtc的开关 #define BSP_USING_ONCHIP_RTC 3.stm32g0xx_hal_conf.h 打开rtc选项 #define HAL_RTC_MODULE_
阅读全文
摘要:board.h中打开如下定义,并新增要使用的通道 #define BSP_USING_PWM1 /*#define BSP_USING_PWM2*/ /*#define BSP_USING_PWM3*/ #define BSP_USING_PWM1_CH1 drv_pwm.c中的函数 static
阅读全文
摘要:原因是通道号对应到实际hal库中的通道名不正确 STM32L431芯片中内部VREFIN通道是0,如果直接使用0号通道去读取将获取错误的adc值,需要修改drv_adc.c中的stm32_adc_get_channel函数,将返回的通道号改为ADC_CHANNEL_VREFINT 17通道对应ADC
阅读全文
摘要:1 static int stm32_adc_init(void) 2 { 3 int result = RT_EOK; 4 /* save adc name */ 5 char name_buf[5] = {'a', 'd', 'c', '0', 0}; 6 int i = 0; 7 8 for
阅读全文
摘要:问题一 在rtt studio软件中添加该组件后发现编译器目录中被屏蔽了,暂时没有找到原因 解决方法是将minini文件夹放到app文件夹中 问题二 ini文件只能读,不能写 minGlue.h头文件的ini_openwrite定义修改 由 #define ini_openwrite(filenam
阅读全文
摘要:想要使用片内flash挂载文件系统需要如下操作 1.添加fal和littlefs软件包 2.打开DFS组件 3.打开MTD Nor flash设备驱动程序 4.board.h中打开 #define BSP_USING_ON_CHIP_FLASH 5.添加drv_flash_l4.c 6.fal_cf
阅读全文
摘要:在pm组件进入低功耗并唤醒后先进行了计数器修正操作,发现当系统计数器修正后会立刻切换到高优先级已就绪的任务进行运行,导致还没有进行低功耗退出的外设配置就运行其他任务了,将导致运行问题 解决方法: 方法1,唤醒后先进行外设配置再补偿系统时钟tick /* enter lower power state
阅读全文
摘要:sst25vf016系列芯片在上电后默认写保护,需要通过写状态寄存器清除写保护位后才能写入, 当系统启动初始化时驱动程序已经执行了device_open,此操作会清除保护位 因此唤醒后需要手动清除保护位才行, 比较好的操作是休眠之前执行device_close操作,唤醒后执行device_open操
阅读全文
摘要:启用片外LSE 添加rtc组件,并不要选择模拟rtc 调试L151时发现在"static rt_err_t rt_rtc_config(struct rt_device *dev)"函数中初始条件编译没有L151的芯片定义,添加上即可,代码如下 static rt_err_t rt_rtc_conf
阅读全文
摘要:引用: https://blog.csdn.net/sinat_31039061/article/details/106356068
阅读全文
摘要://///////////////////////////////////////////////////头文件部分/////////////////////////////////////////////////////////////////////////////// #define EMPT
阅读全文
摘要:#include <stdio.h>#include <time.h> //UTC时间转换为北京时间_SysTime UTCToBeijing(_SysTime time){ uint16_t year=time.year+2000; time.hour += 8; if(time.month==1
阅读全文

浙公网安备 33010602011771号