嵌入式STM32
文章平均质量分 63
人生这么长,要不要来玩玩单片机
lll_lll_|||
生于尘世间 天地一过客 故事留给后人看
展开
-
stm32cubeMX+FreeRTOS(5)—— 串口打印
0. 序cubeMX的FreeRtos和hal库的打印方式一样1. CubeMX配置串口点一下串口Mode然后默认配置就行了,前提是SYS记得配好,72M时钟要选择,这个可以参考我前面的爬坑文章CubeMX爬坑2. 新建串口打印任务如下图配置一下,添加一个任务3. 串口代码和之前的代码有一点不一样,就是printf重定向直接放在usart.c文件里面就行了,不用放在hal.c文件里面。之前才入门搞错了。。。/*-------------------------...原创 2021-09-06 16:55:49 · 2522 阅读 · 1 评论 -
stm32cubeMX+FreeRTOS(4)—— main函数while循环
0. 测试想在主函数中打印一下串口数据,发信一直打印不出来,试了下开关小灯,发现没有进main函数的while循环,阿西吧,我大概要重新看一下CubeMX的rtos架构了...本来打算能用就行了。原创 2021-09-06 16:17:26 · 2148 阅读 · 5 评论 -
stm32cubeMX+FreeRTOS(3)——主从定时器
0.序打算用freeRTOS重构一个项目从定时器开始吧,使用主从定时器主要是为了精准控制电机1.主从定时器简介占坑2.参考表3.配置主定时器使用TIM3从定时器使用TIM4,根据表选择ITR2别忘了开中断4.代码占坑,明天分析...原创 2021-05-17 19:06:46 · 2484 阅读 · 4 评论 -
stm32cubeMX+FreeRTOS(2)——任务挂起和恢复
1.相关函数osThreadSuspend()osThreadResume()注意函数参数传递的是RunLEDHandle,而不是RunLED,传入RunLED会终结所有任务,包括本任务自身也会自杀。2.使用在非LED任务中挂起、恢复LED任务。如果在LED任务中直接挂起,接下来就没发恢复自己,需要通过别的任务来恢复LED任务。 if(a==5) { a++; b=osThreadSuspe...原创 2021-04-28 14:27:13 · 1565 阅读 · 1 评论 -
stm32cubeMX+FreeRTOS(1)——点灯
1.点灯的配置过程时钟配置和没有使用RTOS时候一样,但是这里需要选择其他时钟而不能选择SysTick需要选择一个定时器来作为时钟源直接点FREERTOS,全部默认配置创建任务这里原本是DefaultTask默认会有一个任务,被我改了名字。双击就可以打开。改了三个地方任务名字、入口函数名字、代码初始化使用弱声明IO口直接在这里搜,设为输出,PB5(红灯)和PE5(黄灯)生成代码后这里默认有个osDelay(1);于是修改为HAL_GP...原创 2021-04-20 15:35:17 · 2023 阅读 · 1 评论 -
keil忽略printf警告、C51忽略 L16警告
如图位置,添加以下代码--diag_suppress=223原创 2021-02-22 11:49:52 · 1711 阅读 · 0 评论 -
STM32CubeMX(6)——Printf导致程序卡死
0. 序换电脑,新安装的cubemx 6.3.0,vs2019,minGW7.0,不晓得什么原因,可能是他们使用了安全函数printf_s和scanf_s,导致keil不能识别printf,程序编译没有问题,运行时候卡死在printf。1. 解决办法点魔法棒,把微库勾选上,问题解决。浪费我好多时间mmp...原创 2021-11-10 00:06:32 · 2188 阅读 · 1 评论 -
STM32CubeMX(5)——IIC读写24c02
1. IIC简介IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接 微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。 在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。目前大部分 MCU 都带有 IIC 总线接口,STM32F1 也不例外。但是这里我们不使用 STM32F1 的硬件 IIC 来读写 24C02,而是通原创 2021-05-03 12:45:01 · 3221 阅读 · 17 评论 -
STM32CubeMX(4)——HAL库 DMA+空闲中断
1.序stm32cubemx配置不在说明,网上配置基本都是正确的,以下主要说明几个重要地方。这是个新建项目,只有串口空闲中断功能,已经运行成功,保证按照如下配置可以成功运行串口中断程序。2.开启空闲中断在下图串口文件的串口初始化函数加这两行代码__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);//开启空闲中断HAL_UART_Receive_DMA(&huart1,aRxBuffer,20);//不加这行不能收到第一次数据...原创 2021-03-01 21:10:39 · 3489 阅读 · 2 评论 -
STM32CubeMX(3)——HAL库串口通信
1. cubeMX配置CubeMX配置生成代码参考 :https://blog.csdn.net/as480133937/article/details/99073783cubeMX配置过程的注意事项请参考:https://liu-endong.blog.csdn.net/article/details/1135855002.中断HAL的串口中断不像库函数配置需要自己引用中断向量,他是直接使用启动文件的向量表里面的中断表。然后在中断文件里面实现中断函数,cubeMX生成的..原创 2021-02-19 18:26:17 · 615 阅读 · 0 评论 -
STM32CubeMX(2)——PWM实验
硬件正点原子精英板ZET6PB5TIM3_CH2软件1.设置外部时钟源2.设置时钟频率输入72之后直接点回车确定,自动配置相应时钟3.设置DeBug设置相应下载方式,不设置这个没有开启下载口,无法下载4.查找数据手册小灯对应TIM通道查找数据手册,发现PE5没有对应的TIM通道,因此只能使用PB5,对应TIM3_CH25.设置PWM通道如下图,如果只设置时钟源和通道,发现对应的IO口是PA7...原创 2021-02-19 11:21:02 · 877 阅读 · 0 评论 -
STM32CubeMX(1)——爬坑
1.RCC设置HSE如果没有使用HSE,在时钟树配置界面只能选择64M。因为默认使用内部8M时钟HSI,经过PLL只有4M,然后在16倍频,最多只有64M。选择HSE,不用经过PLL分频,8M直接9倍频,得72M2.SYS设置DeBug如果没有设置JTAG,板子只能下载一次程序,然后要断电重启才能重新烧录。...原创 2021-02-03 10:30:16 · 1147 阅读 · 0 评论 -
正点原子LORA模块无法使用DMA空闲中断
正点原子LORA模块无法使用空闲中断?一帧发5个数据进入5次中断?测了一天了,用不了!占个坑,后续分析一下。原创 2021-01-18 10:31:59 · 959 阅读 · 5 评论 -
Keil取反符号,小灯闪烁
shift+~(键盘左上角数字1感叹号左边那个波浪线)我以为是 -(减号),也没报错,一直以为我程序有问题,敲里马已经第二次出错了,特此记录LED1=~LED1;原创 2020-12-17 14:53:59 · 5130 阅读 · 0 评论 -
STM32F103 RCT6 输出PWM 代码
/*---------------main.c-----------------*///截取我的项目里面的部分代码,头文件自己建int main(void){ //pwm波形 可用示波器测量 TIM3_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz TIM3_PWM_Init(); while(1) { }}/*---------------tim.c-----------------*/.原创 2020-10-21 11:54:06 · 3347 阅读 · 8 评论 -
STM32F103学习笔记(8)—— DMA+串口空闲中断接收数据
1.前言DMA:直接存储器访问,优点是有DMA总线进行数据接收,不会占用CPU资源。在我目前负责的项目,之前是使用串口接收中断来判断是否完成数据接收,项目的坑货前任最开始的方法是在串口接收中断里面清除标志,在微系统的数据处理里面对标志位++,判断如果两次没进到接收中断就认为接收数据完成。最开始一帧数据只有77个字节,数据量较少,处理和接收都比较快。因为客户要求增加15个汉字,协议修改了,一次传输300+字节,接收中断和数据处理函数耗时较长,可能收到第一帧正在处理时候第二帧就发出来了,在处理.原创 2021-01-09 17:12:42 · 4613 阅读 · 4 评论 -
STM32F103学习笔记(7)——CAN通信(下)—— 过滤器配置
1.前言元旦嗨了几天,今天回来补一下CAN的过滤器。就使用而言,实际上CAN的过滤器非常简单,只需要几个简单的参数配置,不需要学习什么邮箱FIFO、还回什么静默什么的。我一直认为,所有的东西想要入门最简单的是找个例子拿来用,你把这个例子将清楚了,我会套着用了,然后再去学习基础知识就会知道自己在学什么,要不然我TMD学了两天各种乱七八糟的定义过两天又全都忘光了,实践的时候发现还入不了门,学了等于白学,又让人对这个想学的东西产生厌恶感。可能是网上的教程可能都不太适合我,所以在使用参考资料写代码.原创 2021-01-04 19:20:40 · 4302 阅读 · 1 评论 -
STM32F103学习笔记(6)——CAN通信(上)—— 波特率配置
1.前言为嘛要写上篇,因为今天是2020年最后一天了,晚上部门聚餐,晚上都没机会加班了,想在写完本篇博客再学下数据结构。因此本章纯属入门内容,让读者看完之后能把CAN给通起来因为我在学习过程中也查了很多资料,基本都是这里截个图,那里抄一点,有人把原子的教程搬上来拿到几百个收藏,然而这些教程都是可能给了某个型号单片机的代码,而没有通用型的文章,并且各种寄存器让人望而生畏,我在跑通几个板子时候特别难受,特此写下本文。2.CAN简介CAN的作用,大多依赖于他的优点,一个总线控制多个设备、速度快等,原创 2020-12-31 18:25:17 · 11786 阅读 · 23 评论 -
STM32F103学习笔记(5)—— 大彩屏使用——串口通信工程级应用
1.大彩屏概览使用大彩屏的好处是,屏幕操作可以直接用屏幕内部指令,比如禁用按键、文本输出等功能,不需要通过下位机获取指令。对外发送的就只有信号,如停止信号、启动信号等,我们只需要知道一个启动或停止信号就可以了,而不需要发送相应的禁用按键指令,这在迪文屏中是无法实现的如图所示,大彩自家的组屏软件TFT,这里我目前只做了工程画面,没有做音频和视频2.大彩教程如图,可以直接百度大彩屏搜索大彩官网,去官网下载资料3.指令相关组屏相关比较简单,看下入门手册自己试试...原创 2020-12-17 11:57:40 · 9388 阅读 · 12 评论 -
STM32F103学习笔记(4)—— 串口通信——发送、接收数据详解
首先说下printf函数如下图所示,该方法是重定义fputc函数,让他变成向上位机发送数据,发送的数据会通过串口调试助手打印出来。#if 1#pragma import(__use_no_semihosting)//标准库需要的支持函数struct __FILE{ int handle;};FILE __stdout;//定义_sys_exit()以避免使用半主机模式void _sys_exit(int x){ x = x;}//重定义fputc函数i.原创 2020-11-28 17:47:27 · 30262 阅读 · 16 评论 -
STM32F103学习笔记(3)—— TIM3_CH1.2.3.4输出4路PWM波——最大计数值、预分频、占空比详解
1.先看看最大计数值、预分频系数、占空比的作用PSC是预分频系数,设置为0时候,默认不分频,也就是如果内部时钟是72Mhz,那么输出的TIM就是72Mhz(103ZET6是72M)。 PSC设置为1时候是2分频,3的时候就是4分频,4的时候......总的来说就是PSC+1倍分频。 我目前使用都习惯把PSC设置为0,就是说不需要预分频。ARR是重装载值,也就是最大计数值,实际上我们可以用定时器中断来模拟这个值。 ARR这个值怎么理解呢?可以理解为,我们预分频之后会产生一个固定频率的脉冲,比.原创 2020-11-21 18:03:14 · 12695 阅读 · 1 评论 -
STM32F103学习笔记(2)—— 同一个项目文件在另一个芯片上运行需要修改的参数
两个地方需要改改选芯片型号 改高低容量宏定义改芯片型号如下图所示,按照步骤点击修改芯片型号,如精英板是zet6,而我的板子是c8t6改容量如何修改 怎么知道自己芯片的容量 芯片命名规则如果板子连接下载器,会自动识别出芯片容量如果没有连接下载线,可以看芯片上面的字,查看型号再看数据手册查看容量芯片命名规则...原创 2020-11-14 09:56:29 · 536 阅读 · 2 评论 -
STM32F103学习笔记(1)——stlink和miniusb下载两种方式
毕业后干了3个月JAVA的CV工程师,感觉后面都是学习框架知识。为了进一步学习计算机底层知识,现在成为一名光荣的点灯工程师。在公司学习了三周stm32相关知识。公司前同事的代码用的是原子14年的代码模板,连注释日期都不改的那种,一个10多行的代码复制了10多遍都不知道封装一个接口去调用,最终被赶走了,留下了一个半截项目,我来此正好赶上项目交付,我师父看了两天代码将其中能明眼看到的bug填完,剩下的就全部交给我了。看了一个周代码,理清代码框架之后,想要重构项目。苦于stm32接口不够熟练,然而前同事画的P原创 2020-11-06 14:47:49 · 3604 阅读 · 1 评论