- 博客(30)
- 资源 (4)
- 收藏
- 关注
原创 STM32F407通过定时器ETR实现外部高频波形计数功能
定时器TIM2为32位定时器,设置为外部时钟源模式2,ETR引脚作为输入,对输入信号进行分频可降低MCU的响应,CNT获得分频后的计数器值,通过TIM3和TIM3主从模式获得精准的1s定时
2023-05-26 17:43:03
1854
原创 Lmp7721通过跨阻运放方式采集荧光信号踩坑
最近焊接了一批荧光采集电路板,发现微弱荧光时无输出。1.自己焊接工作正常2.焊接厂焊接有问题。3.逐个更换元器件,无效。4.补焊锡,无效。5.增加偏置电压无效。6.更改跨阻的电容,无效。7.把器件全部去掉,重新焊接后正常。说明焊锡品质很差,微小电流信号无法正常通过。
2022-10-19 21:54:35
649
原创 STM32F407系统升级IAP实战
MCU启动后,进入bootloader,识别是否有新固件userdata区域的数据是否有新固件标识(userbakapp区域是否有新数据),如果有,将userbakapp区内的数据复制到userapp区域,将userdata的新固件标识清除,重新启动进入userapp。userapp 程序:0x8020000 长度0x20000。bootloader 程序:0x8000000 长度0x8000。userbakapp程序:0x8040000 长度0x20000。...
2022-08-17 09:55:33
1810
原创 CH573 BLEUART
开发板为CH573烧录方式:按下DOWNLOAD,然后通电,用串口TX1–PA9,RX1–PA8烧录。找到例程BLEUART,直接下载烧录。log信息通过RX1输出,数据收发通过TXD3——PA5,RXD3——PA4收发。通过手机APP:nRF connect查找CH573_BLE_UART连接成功后如上图。按下向下图标激活“通知指示”,即可收发信息。UUID:0X0000FFF1为接收,内容:Valve内。UUID:0X0000FFF2为发送,内容:write Valve内..
2021-09-30 15:42:06
1074
原创 IAR7版本兼容旧版本问题
当IAR7一下的版本用IAR7打开是会报错。打开一个以前编译正常的项目(用IAR5.5建立的),编译时提示如下错误(现在用的IAR6.3):Error[Pe147]: declaration is incompatible with “__interwork__softfp unsigned long __get_PSP(void)” (declared at line 52 of "C:\Program Files\IARC:\Libraries\CMSIS\CM3\CoreSupport\c.
2021-08-25 08:54:59
567
原创 呼吸灯正弦函数
包含#include “math.h”__weak void StartLED_Task(void const * argument){/* USER CODE BEGIN 5 // Infinite loop */for(;????{for(uint8_t i=0;i<120;i++){ if(i<100) { osDelay(20); brightNess=sin((3.1415926/100)*i); } else { osDelay(
2021-08-12 14:39:06
970
原创 CC2541入门环境搭建
安装BLE 协议栈BLE-CC254x-1.3.2,BLE-CC254x-1.4.0,BLE-CC254x-1.4.2.2安装IAR版本IAR for 8051 v9.10 是编译 BLE1.4.2.2 协议栈 源代码的集成环境,类似于大名鼎鼎的keil,但我觉得确实没有 keil 好用,但目前 cc2540 、cc2541 并不支持 keil 编译。3.连接调试工具CC debugger,在设备管理中查看是否安装好驱动。4.找到出厂例程,编译成功。5.连接开发板调试。成功。...
2021-06-27 07:34:42
841
原创 ES7P003实战填坑
开发环境有两种iDesigner4.1和VSCode For ESSEMI,在http://www.essemi.com/article/c80/p2.html?searchWord=32%E4%BD%8D里可以下载。需要先“预安装环境”“C 编译器工具链 HRCC (8位)”再安装iDesigner和vscode。ESBurner用来配置芯片的配置字,包含时钟,仿真,复位,IO等选择。仿真器:es-link II,可以仿真和下载8位,32位芯片。有几个特别需要注意的地方:仿真时需要打开ESBu.
2021-06-21 16:20:39
3837
2
原创 CC2541蓝牙BLE应用详解
https://blog.youkuaiyun.com/u014436243/article/details/116715997?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162149686816780357237986%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162149686816780357237986&
2021-05-20 15:54:40
807
原创 IAR 新旧版本兼容问题
报错内容:extern uint32_t __get_PSP(void); 已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义extern uint32_t __get_MSP(void);已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义2 修改方式把core_cm3..
2021-05-19 13:53:28
1063
原创 EMW3080固件烧录方法
EMW3080B 模块 all.bin 烧录方法3080B 的 all.bin 是通过串口,进入 Bootloader 模式,使用命令 4 进行烧录。烧录方法EMW3080B 模块 用户串口通过 “TTL 转 USB 模块” 接到 PC 端 USB 接口,并在设备管理器中找到对应的 COM 端口号,如 COM1;2.打开串口调试软件工具 - SecureCRT,连接用户串口 COM1,波特率:921600bps;3.EMW3080B 模块的 BOOT 引脚拉低,然后 Reset 拉低,重启后,
2021-05-12 14:56:01
2068
原创 WIFI模块UDP广播建立通讯
UDP广播广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址255.255.255.255,将消息发送到在同一广播网络上的每个主机。值得强调的是:本地广播信息是不会被路由器转发。当然这是十分容易理解的,因为如果路由器转发了广播信息,那么势必会引起网络瘫痪。这也是为什么IP协议的设计者故意没有定义互联网范围的广播机制。广播地址通常用于在网络游戏中处于同一本地网络的玩家之间交流状态信息等。 其实广播顾名思义,就是想局域网内所有的人说话,但是广播还是要指明接收者的端口号的,因为不可能接受者.
2021-05-10 15:02:34
1908
原创 Freertos 邮箱收发结构体数据
freertos.c源码如下:/* USER CODE BEGIN Header *//** ****************************************************************************** * File Name : freertos.c * Description : Code for freertos applications ********************************
2021-04-11 16:17:50
568
原创 Free-rtos 队列发送接收结构体
freertos.c源码如下:/* USER CODE BEGIN Header *//** ****************************************************************************** * File Name : freertos.c * Description : Code for freertos applications ********************************
2021-04-11 13:40:34
841
原创 FreeRTOS 中断,临界,任务概述
FreeRTOS中断和临界段配置Cortex-M3的NVIC最多支持240个IRQ中断,1个不可屏蔽中断(NMI),1个systick(滴答定时器)和多个系统异常中断。临界段:必须不打断完整运行。优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断不响应。中断级临界段:用在中断服务程序中,优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断不响应。先读出BASEPRI的值保存,将configMAX_SYSCALL_INTERRU.
2021-03-10 21:21:06
312
原创 Freertos 的任务状态和运行时间串口打印
参考正点原子例程实现。先配置FreeRTOSConfig.h/***************************************************************************************************************//* FreeRTOS与运行时间和任务状态收集有关的配置选项 *//**********
2021-03-10 11:37:19
1531
原创 VSCode 环境配置支持STM32的仿真
首先下载文件:gcc-arm-none-eabi-9-2019-q4-major-win32-sha2mingw64openocd-0.10.0VSCodeSetup-x64-1.42.1安装VSCode和openocd-0.10.0。将gcc-arm-none-eabi-9-2019-q4-major-win32-sha2和mingw64解压到C盘。环境变量包含路径打开vscode安装插件如下主要安装:c/c++,通过STM32CubeMX生成make。通过..
2021-03-08 21:16:55
1236
原创 C语言编程进阶应用
@[TOC]结构体拷贝#include <stdio.h>struct People{ int age; char* name;};int main(){ struct People p; p.age = 20; p.name = "zhangshan"; printf("age:%d\n",p.age); struct People p1 = p; //内存的拷贝 p.age = 100; p.n.
2021-02-20 17:18:53
148
原创 IAR优化详解
-引用 https://v.youku.com/v_show/id_XNzE2MDY5NDI0.htmlList item不优化:所有的变量都可以被观测到。低优化:变量不再使用时,不被观测。中等优化1、common subexpression elimination去除 通用子表达式2、loop unrolling循环展开3、Function Inlining函数内联4、code motion程式码调整5、type-based alias analysi
2021-02-19 10:06:30
5311
2
原创 printf在Terminal I/O或Uart输出信息
在仿真时便于调试的方法使用printf可以在Terminal I/O输出信息,烧录时需要屏蔽DBUG_PRNTF即可。代码如下#include <stdio.h>#define DBUG_PRNTF 1 #ifdef DBUG_PRNTF printf("\n%s\n","M5311rst");//测试功能 #endif...
2021-02-19 08:30:47
382
原创 STM32 DCMI OV9655 直接在LCD显示
CUBEMX配置DCMI如下:生成代码。DCMI初始化代码如下:void HAL_DCMI_MspInit(DCMI_HandleTypeDef* hdcmi){ GPIO_InitTypeDef GPIO_InitStruct = {0}; if(hdcmi->Instance==DCMI) { /* USER CODE BEGIN DCMI_MspInit 0 */ /* USER CODE END DCMI_MspInit 0 */ /* Perip.
2021-02-16 12:18:09
1488
原创 SD卡读取和文件写入
配置cubemx生成代码代码如下做修改HAL_SD_ReadBlocks(&hsd,(uint8_t*)SDIO_DATA_BUFFER,0,512,0x0ff);//单个sector的读操作要注意最后一个参数是时间,设置大一些。读取出来的0块最后内容/* Private variables ---------------------------------------------------------*/CRC_HandleTypeDef hcrc;SD_Han..
2021-01-26 19:42:49
757
原创 STM32 SD卡FATFS文件多次写入
硬件:STM32F439,SD卡。SD卡FATFS例程。例程如下#include "main.h"#include "ff.h"#define STRING_SIZE 120#define BOOL boolBYTE buffer[512];FATFS fs;FIL file,SDFile;unsigned int res,i,bw,br; uint32_t byteswritten; /* File write counts */ char.
2021-01-21 09:01:53
3064
原创 SFMC驱动LCD心得
硬件:神舟王STM32F439开发板,3.2寸320*240LCD液晶芯片ID8989.接口为 16位数据,指令、数据切换A0。对于初始化如下:void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram){ GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_FMC_CLK_ENABLE(); //ʹÄÜFMCʱÖÓ __HAL_RCC_GPIOD_CLK_ENABLE(); //ʹÄÜGPIODʱ.
2021-01-19 19:34:25
710
4
原创 VS1003播放MP3音乐生成
本次测试采用神舟王STM32F439开发板中的例程:68.VS1003示例音乐播放(神舟王STM32F439IGT-库函数版)。用例程测试,将例程下载到开发板上,耳机插入音频输出口,听到音乐循环播放。分析例程后,找到MP3Sample.C文件,里面存放的是MP3转为HEX文件的数组。由此分析只需修改本文件中的数据内容即可播放自己想要的音乐文件。音乐数组如何生成?是个需要解决的问题。在网上搜索MP3转换HEX工具,找到DataToHex.EXE如下:由于MP3音乐文件较大,先用裁剪工具,剪去一部分.
2021-01-19 11:41:22
756
原创 常用的数据转换格式
<stdlib.h>字符串转整型:int atoi(const char *str)uint8_t temp_len_n=0,temp_len=0;char temp_data[10]={“123466”};temp_len=atoi(temp_data);printf中fputc重写需要先包含#include “stdio.h”然后添加代码如下:int fputc(int ch,FILE *f){uint8_t temp[1]={ch};HAL_UART_Tra
2021-01-13 14:54:15
295
原创 STM32CubeMX生成STM32F439工程文件LED点亮
按图选择配置LED和RCC,生成工程文件生成工程后,编译出错,stm32 :No section matches selector - no section to be FIRST/LAST错误文件XXX.sct没有添加startup_stm32f10x_md.s 文件,在工程文件中找到startup_stm32f439xx.s文件添加编译成功。烧录到电路板后,LED灯点亮。...
2021-01-12 09:12:03
232
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人