STM32学习
文章平均质量分 53
无衣 秦风
这个作者很懒,什么都没留下…
展开
-
自定义帧--不同模块间使用串口进行数据交互
笔者的实验平台为STM32和AIR724UG,这两款芯片一种是常用的使用C语言开发的单片机一种是基于luat os的lua开发方式的通讯模块。算是可以比较本文所论述的使用自定义帧通过串口在不同平台进行数据交互的形式,算是抛砖引玉。STM32与AIR724UG概述对于AIR724UG而言一般使用串口进行通讯,以下将介绍两种通讯协议的制订与实现方式,包含关于通讯协议通用性与帧长度之间的取舍。其中STM32使用C语言库函数编写、AIR724UG使用Lua脚本编写。一般一个数据帧包含帧头、帧长度(包个数)、原创 2022-04-01 10:46:16 · 1282 阅读 · 0 评论 -
STM32 ucos II中无法将float类型变量强制转换为void *类型的解释说明
背景:在项目制作的过程中使用ucos ii的邮箱发送函数发送float时发现float SMA;OSMboxPost(msg_sma,(void*)SMA);报error: #171: invalid type conversion错误一番查证后发现时C语言浮点类型转换成void 类型的错误改正方法为OSMboxPost(msg_sma,(void)&SMA);解释:在STM32中float类型占用4字节,而STM32中的地址也为4字节,但C语言有一个特性:变量在发生类型转换时会按原创 2022-03-13 17:39:30 · 2498 阅读 · 0 评论 -
ucosII 下iic 的使用问题(含解决方式)
今天在将SGP30气体传感器的代码移植到ucosii中使用时遇到了输出数据一直为65535的情况。分析现象,开始以为是硬件问题(元器件损坏等原因)使用了裸核代码进行测试,能够正常读取相应参数说明硬件正常。ucos跑死了?增加led显示任务,led显示任务正常进行怀疑是ucos在iic进行延时时运行了别的任务增加临界区,仍然无法正常读取上网查询后发现大家普遍都有这个问题研究了下正点原子的综合测试实验(在ucos下使用了iic)发现正点原子的iic代码中是没有delay_ms的同时它iic中的延原创 2021-12-05 23:17:44 · 2477 阅读 · 0 评论 -
ucosii消息队列学习
近期在学习ucosii的内容使用的平台为STM32F103C8T6最小系统板。今日关于消息队列的使用遇到了一些问题。基本情况:移植代码为正点原子ucosiii消息队列、信号量集和软件定时器例程。主要新建两个任务post_task用以发送信号量集get_task用以接收信号量集,两者具体代码如下:void post_task(void *pdata){ u8* p; u8 err; static u8 msg_cnt=0; //msg编号 while(1) { p=mymal原创 2021-10-09 22:10:27 · 455 阅读 · 0 评论 -
STM32F103C8T6移植ucosii 添加正点原子malloc.c文件后遇到Error: L6406E问题解决方式
错误描述:…\OBJ\UCOSII-1.axf: Error: L6406E: No space in execution regions with .ANY selector matching main.o(.data).主要原因为内存不足解决方式为:修改malloc.h文件下关于mem1内存参数的设定,将MEM1_MAX_SIZE参数从原本的40*1024改为合适的大小即可,我将这个参数改成了10 *1024,完美运行。//mem1内存参数设定.mem1完全处于内部SRAM里面.#defin原创 2021-10-09 11:28:32 · 1849 阅读 · 6 评论 -
void USART1_IRQHandler(void) 串口中断服务函数详解
本文主要分析正点原子stm32的void USART1_IRQHandler(void) 函数一下为源代码void USART1_IRQHandler(void) //串口一中断服务函数 { u8 Res;#if SYSTEM_SUPPORT_OS 如果SYSTEM_SUPPORT_OS为真支持OS. OSIntEnter(); #endif...原创 2019-07-01 22:36:15 · 17347 阅读 · 0 评论 -
stm32 pwm同时输出输出四道方波
stm32 pwm同时输出输出四道方波主要是在正点原子PWM输出实验的基础上修改所得原本的代码 while(1) { delay_ms(10); if(dir)led0pwmval++; else led0pwmval--; if(led0pwmval>300)dir=0; if(led0pwmval==0)dir=1; ...原创 2019-06-28 15:49:49 · 2441 阅读 · 0 评论