- 博客(70)
- 资源 (12)
- 收藏
- 关注
原创 git入门环境搭建和gui使用
git官网地址:https://git-scm.com/然后一路next 默认路径 默认勾选就行。如果没有魔法的话,官网这个地址能卡死你。今天就写到这吧,11点多了该睡了,,,这里给个国内的git镜像链接。
2024-11-14 23:12:29
394
原创 基于沁恒微 ch643q 多通道采集 adc 驱动层实现
ADC是12bit精度 参考电压就是供电电压 我用usb供电所以参考电压就是5v。给通道0的引脚接入0.4v 电压 验证打印出来ad值为330 左右。
2024-02-28 16:37:58
557
原创 单向链表节点的逆序反转
#include <stdio.h>typedef struct node{ int val; struct node *next;}node;void reverse(node * pHead){ node * pCur, * pNewHead, * pTemp; if(NULL == pHead || NULL == pHead->next) return; pNewHead = pHead; pCur = pHead->next; whil
2022-01-09 22:40:35
272
原创 对称加密、非对称加密、签名验签
对称加密通信,双方通信用同一个密钥对数据加密和解密。+++++++++++++++++++++++++++++++++++++++++++++++++A ----> 同一个密钥加密的数据 >---- BB 用同一个密钥解密B ----> 同一个密钥加密的数据 >---- AA 用同一个密钥解密+++++++++++++++++++++++++++++++++++++++++++++++++非对称加密有两个密钥公钥和私钥。公钥只能加密不能解密,只有其对应私钥可用来解密。
2021-03-18 11:19:40
715
原创 stm32 wb55 dc-dc供电 蓝牙连接不稳定
开发过程中发现Vin 超过 3.85v,蓝牙连接不稳定。反馈脚与Vout之间添加一个 5nf电容。
2021-03-16 14:23:35
589
原创 nrf 52xxx RS485 MODBUS-RTU
今天开始攒代码了,,, nrf 52xxx MODBUS2毫秒定时器判断一帧数据接收完成void uart_chk_rcv_over_timer_handler(void *p_text){ ++g_run2MsTick; //如果正在接收 且 空闲时间大于1个tick 认为接收一帧结束 if((g_uartCrl.is_rcv_busy == UART_RCV_BUSY) \ && (SYS_BUSY_MS > (2 + g_uartCrl.r
2021-01-13 14:05:19
1018
2
原创 STM32串口发送数据卡死
记录一个开发日常。DMA发送串口数据”卡死“使用DMA发送串口数据记得修改对应DMA中断处理函数。否则程序异常跳转跑飞。
2021-01-05 17:50:38
2274
4
原创 引用了声明的头文件仍然报警告declard implicitly
记录一个日常今天用keil编译完被报了一个警告 declard implicitly截图可看出来我有声明但是仍然报了警告:隐式声明原因是调用该子函数的函数未被使用。
2020-12-24 19:15:54
1379
1
原创 1kHZ基频 1毫秒定时器 IO口 模拟pwm 呼吸灯
void GREEN_OFF() { /* 灭灯 */ }void GREEN_ON() { /* 点灯 */ }#define DUTY_RATE_NUM 44#define DURATION_TIME 50static uint8_t count = 0; // 小周期计时static uint8_t count2 = 0; // 小周期计次static uint8_t steppingDir = 0; // 变化方向控制static uint8_t s_dutyIndex =
2020-11-09 11:27:29
917
原创 nRF 52820 高压模式供电烧录失败问题
nRF 52820 高压模式供电 默认输出1.8v 需要在初始化设置输出电压#define UICR_REGOUT0_VOUT_1V8 (0UL) /*!< 1.8 V */#define UICR_REGOUT0_VOUT_2V1 (1UL) /*!< 2.1 V */#define UICR_REGOUT0_VOUT_2V4 (2UL) /*!< 2.4 V */#define UICR_REGOUT0_VOUT_2V7 (3UL) /*!< 2.7 V */#de
2020-11-05 11:33:17
715
原创 记一个小bug:布尔变量取反不能用 ~ 符号
记一个c的小bug:布尔变量取反不能用 ~ 符号{ static bool cnt = false; cnt = ~cnt; switch(cnt) { case 0: NRF_LOG_DEBUG("a cnt[0x%x] = false.",cnt); break; default: NRF_LOG_DEBUG("a cnt[0x%x]
2020-10-28 16:21:02
2548
4
原创 CMSIS-RTOS v2 信号量api 学习
Keil官网 CMSIS-RTOS v2 信号量章节的网址功能: 创建并初始化一个信号量参数 max_count : 最大可获取的值参数 initial_count : 可获取的初始值参数 attr : 信号量的相关属性(名字,大小 ...)返回值: 后面被用来释放和获取的信号量句柄osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr);
2020-09-22 10:12:18
2234
原创 nrf52xx 电池电压ADC低功耗滑动滤波采样
sdk_config.h 修改宏SAADC_ENABLED & NRFX_SAADC_ENABLED#include "nrf_drv_saadc.h"#include "nrfx_saadc.h"#include "nrf_saadc.h"/**sdk_config.h 修改宏*SAADC_ENABLED & NRFX_SAADC_ENABLED*///阻塞模式不需要回调事件处理获取采样值void saadc_evt_callback(nrf_drv_saadc_evt
2020-09-05 10:14:22
2039
5
原创 CMSIS-OS2 api 线程标志学习
后续随进度会更新。。。–线程标志–线程标志(和事件标志接近)可用于进程间通信。比如笔者做的蓝牙指纹锁项目,蓝牙收到消息 给指纹任务设置一个线程标志,指纹任务等到标志不再阻塞根据线程标志执行对应指纹任务(注册,删除,,,)。线程标志设置函数:uint32_t osThreadFlagsSet ( osThreadId_t thread_id,uint32_t flags ) thread_id:是线程IDflags:是线程标志,根据需要设置线程标
2020-08-29 10:42:22
795
原创 keil 编译优化等级低 导致flash操作失败
记一个坑之前想用V6的ARM Complier,尝试未果,,,这个过程不提了。然后切回V5的版本,结果没注意编译优先级变成了 -O1,导致程序code段占的flash空间大了一倍。后面操作flash就操作到了code段于是失败。-O1 优化生成的map文件-O3 优化生成的map文件...
2020-08-25 16:35:22
761
1
原创 STM32WB55 ADC获取电压值
McuAdc.c#include <stdio.h>#include <stdint.h>#include "McuAdc.h"ADC_HandleTypeDef hadc1;/* Variables for ADC conversion data */__IO uint16_t uhADCxConvertedData = VAR_CONVERTED_DATA_INIT_VALUE; /* ADC group regular conversion data
2020-08-20 08:53:55
1112
原创 STM32WB55 freertos 低功耗
修改app_conf.h打开低功耗支持宏/** * When set to 1, the low power mode is enable * When set to 0, the device stays in RUN mode */#define CFG_LPM_SUPPORTED 1关闭打印控制宏/** * keep debugger enabled while in any low power mode when set to 1 * should be set t
2020-08-19 11:06:23
1461
原创 STM32WB55 RTC万年历
#ifndef __RTC_H_#define __RTC_H_#include <stdint.h>#if 0 用外部低速时钟作为时钟源#endif#define RTC_CLOCK_SOURCE_LSE#ifdef RTC_CLOCK_SOURCE_LSI#define RTC_ASYNCH_PREDIV 0x7C#define RTC_SYNCH_PREDIV 0xF9#endif#ifdef RTC_CLOCK_SOURCE_LSE#de
2020-08-18 14:21:44
400
原创 记一个日常 keil5 MDK 的异常提示Note: object file renamed from “xxx.o“ to “xxx_1.o“
有时候修改一个源文件的路径可能会忘记删除原来所在group的文件。这时keil会有提示Note: source file 'xxx.c' - object file renamed from 'xxx.o' to 'xxx_1.o'.经过测试, 删除重复文件并Rebuild都解决不了。必须在左边Project栏下选中文件右键 Options for file xxx.c取消“Include in Target Build”旁边的勾编译一次这一次编译会报错不要管错误,然后勾上这个勾再编译一次就
2020-08-05 16:27:09
17885
24
原创 一个开发日常error: #20: identifier “SPI_HandleTypeDef“ is undefined
最近开发跑rtos带蓝牙的stm32wb55。开发st的方便在于有cube可以生成代码,可是有中间层的情况就支持的不够好。比如既带rtos又带蓝牙协议栈就无法用cube生成可以编译成功的代码。官方例程的readme的描述也说明了这一点。所以我现在只能手动修改不能享受cubeMX的便捷了。今天手动添加spi,结果出现一个报错通过全局搜索头文件关键词 stm32wbxx_hal_spi.h发现需要取消对应模块的注释。...
2020-08-04 19:49:17
5544
4
原创 STM32WB55xx 任意长度和任意地址写入的 Flash 驱动
/** ****************************************************************************** * File Name : McuFlash.c * Description : Flash driver for STM32WB55xx * @author : zxk *******************************************************
2020-07-29 09:03:23
1749
原创 go 语言实现CRC16-CCITT
package mainimport ( "fmt" "bytes" "encoding/binary")var MbTable = []uint16{ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393
2020-07-23 16:30:52
1613
1
原创 STM32WB 删除指定广播类型 数据
/* Delete Ad Type Tx Power */ ret = aci_gap_delete_ad_type(AD_TYPE_TX_POWER_LEVEL); if(BLE_STATUS_SUCCESS == ret) { APP_DBG_MSG("Successfully Delete Tx Power \n" ); } else { APP_DBG_MSG("Delete Tx Power Fail\n" ); }
2020-07-20 18:55:36
297
原创 STM32WB55 广播间隔
广播间隔以0.625ms为单位。app_conf.h#define CFG_FAST_CONN_ADV_INTERVAL_MIN (0x80) /**< 80ms */#define CFG_FAST_CONN_ADV_INTERVAL_MAX (0xa0) /**< 100ms */#define CFG_LP_CONN_ADV_INTERVAL_MIN (0x640) /**< 1s */#define CFG_LP_CONN_ADV_INTERV
2020-07-20 15:44:02
534
原创 STM32WB55 获取蓝牙链接过程协商的MTU值
1、调用aci_gatt_exchange_config这个api可以产生mtu交互事件。/** * @brief Perform an ATT MTU exchange procedure.When the ATT MTU exchange procedure is completed, a @ref aci_att_exchange_mtu_resp_eventevent is generated. A @ref aci_gatt_proc_complete_event event is a
2020-07-18 21:24:13
1119
原创 STM32WB55设置扫描广播包数据
/* Update Scan data */ { uint8_t scan_data[31] = { 0x14,/*len = 1(ad type) + 2 (manuf id) + x(payload data)*/ AD_TYPE_MANUFACTURER_SPECIFIC_DATA,/*type*/ 0x7e, 0xff,/*manuf id*/ 0x00/*payload data*/ }; ret = hci_le_set_scan_response_data(
2020-07-17 08:43:45
760
原创 STM32WB55 在BLE_HeartRateFreeRTOS例程基础上修改成带rtos的p2ps透传服务
STEP1\ 通过对比p2ps和HeartRateFreeRTOS例程增删文件BLE_HeartRateFreeRTOS例程原目录替换成p2p_server_app.c修改内容1、 增删文件1.1、Application/STM32_WPAN/app/ 目录下添加一文件:p2p_server_app.c1.2、Application/STM32_WPAN/app/ 目录下删除两个文件:1\ dis_app.c 2\ hrs_app.c2、 序列器调度改成rtos任务2.1 添加代码
2020-07-16 18:42:43
1500
2
原创 记录一个wb55例程的坑: No target connected 链接st-Link失败
烧录完例程 BLE_HeartRateFreeRTOS 后,keil烧录之前ok的程序都不行。keil 窗口一直打印 Target Dll has been cancelled弹窗找不到设备:No target connected原因:例程的代码动到了烧录的引脚
2020-07-14 15:57:27
474
2
原创 STM32WB55 蓝牙不定长数据读写
1、设置BLE需要通信的最大长度添加代码:发送函数/* * send notify data. */tBleStatus bleSnd(uint16_t len, uint8_t *data){ tBleStatus result = BLE_STATUS_INVALID_PARAMS; result = aci_gatt_update_char_value(aPeerToPeerContext.PeerToPeerSvcHdle,
2020-07-09 20:00:33
1696
2
原创 STM32WB55 用 cubemx 生成串口打印
1、设置Connectivity2、带蓝牙工程的打印配置添加用户代码a.添加头文件 “app_debug.h”/* USER CODE BEGIN Includes */#include "stm32_seq.h"#include "app_debug.h"/* USER CODE END Includes */b.添加初始化 APPD_Init();/* Initialize all configured peripherals */ MX_GPIO_Init(); M
2020-07-09 15:01:53
765
原创 STM32CUBE 生成STM32WB55XX带 BLE 的工程
时钟配置外部高速晶振给晶振使用使能RTC中断使能RF使能BLEconfig添加代码修改广播名测试查看用nrf connect查看
2020-07-08 17:07:12
1595
6
wb55xx_uart_dma_rxidle_txcplt_sem.rar
2020-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人