wxWidgets 中文乱码解决办法
在 Clion 中 wxWidgets 中文乱码的解决办法,解决办法是配置编译器为 UTF-8 选项:
123# Visual Studio 配置 UTF-8,解决中文乱码问题 add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
0.96寸OLED显示屏
0.96 寸黄蓝 OLED 显示屏像素大小:
顶部黄色区域为 16x128像素
底部蓝色区域为 48x128像素
SSD1306 初始化遇到屏幕花屏的调试笔记
在调试 SSD1306 驱动 0.96寸 OLED 时,遇到了在初始化完成后全屏点亮时花屏,最后发现去掉这两行命令后回复正常:
1234// 设置起始页地址,假设从第0页开始sendCommand(0x22);// 设置页地址指令sendCommand(0x00);// 设置起始页地址,这里设为第0页// 注意:对于128x64的SSD1306,页地址范围是0到7(共8页)
花屏图片:
用 NVM 管理 npm 和 node 的版本
NVM 是用来管理 node 和 npm 版本的工具,官方仓库:https://github.com/nvm-sh/nvm
我的系统是 Windows,需要安装 nvm-windows,官方仓库: https://github.com/coreybutler/nvm-windows
nvm 命令
nvm list 查看安装的 node 版本
windows 查看可用的版本 nvm ls available
nvm use 版本号 切换的指定版本
nvm use node 切换到最新版本
AT32 配置nvic优先级组
在学习 At32 的过程中遇到了nvic优先级组,在此做个记录方便以后查阅。at32的固件库中 NVIC 相关的 API 在 at32f413_misc.c 文件中。
nvic_priority_group_typenvic_priority_group_type 枚举类型,定义了5中分组类型,定义如下:
1234567891011/** * @brief nvic interrupt priority group */typedef enum{ NVIC_PRIORITY_GROUP_0 = ((uint32_t)0x7), /*!< 0 bits for preemption priority, 4 bits for subpriority */ NVIC_PRIORITY_GROUP_1 = ((uint32_t)0x6), /*!< 1 bits for preemption priority, 3 bits for subpriority */ NVIC_PRIORITY_GR ...
AT32 打印输出 SystemCoreClock 的值
这里简单演示下打印输出 SystemCoreClock 的值,我用的 MCU 为 at32f413,最大频率为 200MHz。
我的配置:
配置代码时钟的配置可以用 AT32 官方提供的时钟配置工具(AT32_New_Clock_Configuration.exe)来生成。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950void system_clock_config(void){ /* reset crm */ crm_reset(); // 使用外部 8MHz 晶振 crm_clock_source_enable(CRM_CLOCK_SOURCE_HEXT, TRUE); /* wait till hext is ready */ while(crm_hext_stable_wait() == ERROR) { } /* config pll clock resource */ crm_pll_ ...
FreeRTOS 配置文件笔记
FreeRTOSConfig.h 是 FreeRTOS 中的配置文件,通过配置该文件可以裁剪使用哪些 FreeRTOS 功能。
网站的 FreeRTOSConfig.h 配置文件很大有很多配置选项,但是有很多选项是有默认值的,我们只需配置我们使用的选项即可。
下面是一份 FreeRTOSConfig.h:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511 ...
TM3608 可调升压双电源开源项目分享
最近做了一个双电源升压模块,可以把一个低的电压升压为正负电压。芯片用的是 MT3608,特此分享出来给大家。
供电输入可以选择 USB 也可以选择 6P的排针,通过调节2个电位器可以调整正负输出电压的高低。
原理图
成品
力创开源硬件平台https://oshwhub.com/zsf90/mt3608_power_double
FreeRTOS 按键程序代码笔记
在这里分享一个我写到基于 FreeRTOS 的按键程序,只是自己的一个思路,欢迎讨论。
数据结构定义123456789101112131415161718192021222324252627282930313233343536373839404142434445464748//// File: xtp_defines.h//#ifndef __XTP_DEFINES_H#define __XTP_DEFINES_H#include "at32f413.h"#include <stdbool.h>#include <stdio.h>#define USE_FREERTOS (1) // 1:使用 FreeRTOS 0:不使用 FreeRTOS#define AT32#define LED#if USE_FREERTOS#include "FreeRTOS.h"#include "task.h"#endif#ifdef LED#include "led.h"#endif#define K ...
FreeRTOS钩子函数
FreeRTOS 中的钩子函数和中断的回调函数很像,钩子函数的名字是固定的,在特定事件下会自动执行响应名字的钩子函数,并且钩子函数是可剪裁的,在 FreeRTOSConfig.h中配置是否启用特定的钩子函数。
vApplicationTickHook节拍中断可以选择是否回调一个钩子函数,这个钩子函数允许实现一些周期性的功能。
使用节拍中断钩子函数,需要将 configUSE_TICK_HOOK设置为1,同时钩子函数申明为如下原型:
void vApplicationTickHook( void )
这个钩子函数必须很短且占用堆栈空间很少,因为这是在中断中调用的函数,同时,只能调用以FromISR结尾的API函数。