STM32
文章平均质量分 64
基于stm32f103c8t6模块开发,一些实操性项目,以及cubeMx配置使用
IT味番茄
记录我的嵌入式学习生涯
展开
-
实时操作系统与非实时操作系统
实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。在上面的图中右边的任务优先级高于左边的任务,先看实时操作系统的,当优先级更高的任务2就绪的时候,即便任务1正在运行中,也必须立刻交出CPU的使用权,就跟中断一样,先执行任务2,等任务2执行完或者主动挂起(sleep)让出CPU的时候,任务1才能接着运行。原创 2023-08-20 19:01:33 · 1164 阅读 · 0 评论 -
关于波特率与字节传输速率计算
用 9600 波特率来举例,就是最高每秒可以检测到 9600 个电平变化(上升沿/下降沿),也可以说最大每秒可以接收 9600 位数据,bit ,也就是二进制数(0/1),每个电平发生跳变的时钟周期为:1/9600 s.这个条件再次分析一下就是,如果我要传输一个字节(8 位)的数据,则我应该在总线上产生 11 个电平变换,也就是串行总线上,需要 11 位,才能发送 1 个字节数据。1 个起始位,8 个数据位,0 个校验位,1 个停止位。1 个起始位,8 个数据位,1个校验位,1 个停止位。原创 2023-05-08 20:27:50 · 2439 阅读 · 0 评论 -
I2C接口为什么要设计成开漏输出?
第二个原因,就是多设备通信仲裁需要做线与逻辑,开漏输出能做到,如果用推挽输出做线与就会如上面原因,造成短路。线与逻辑,主设备想总线置1,开始空闲,从设备这时候如果输出0 ,会产生1&0=0,造成主设备认为总线还是被占用,无法空闲,主设备放弃拉高,这样不会破坏从设备正在通讯的数据。析这个问题,首先要从I2C接口的设计初衷说起,制定者当初设计成I2C总线的就是要实现,一个I2C主机可以挂很多I2C从机。综上所述,双总线接口外设一般要设计成开漏输出,一是防短路,而是做线与逻辑,方便仲裁。原创 2023-05-08 20:06:11 · 1550 阅读 · 0 评论 -
项目七:智能小车
这两节里配置有误,正确的应该是PSC=7199,ARR=199,大家注意修正!对应源代码:smartCar_project11_1。对应源代码:smartCar_project11_2。对应源代码:smartCar_project9_1。对应源代码:smartCar_project9_2。对应源代码:smartCar_project9_3。对应源代码:smartCar_project1。对应源代码:smartCar_project2。对应源代码:smartCar_project11。原创 2023-03-18 01:18:00 · 386 阅读 · 1 评论 -
9.独立看门狗 IWDG
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog)。独立看门狗工作在主程序之外,能够完全独立工作,它的时钟是专用的低速时钟(LSI),由VDD 电压供电, 在停止模式和待机模式下仍能工作。原创 2023-03-18 01:14:42 · 87 阅读 · 1 评论 -
5.中断和事件
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。外部中断/事件控制器(EXTI)管理了控制器的 23 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所不。原创 2023-03-17 11:06:20 · 130 阅读 · 0 评论 -
项目六、温湿度LCD显示并上传服务器
RS、RW、EN三根信号线经常需要进行拉高/拉低操作,可以进行封装DAT -- PB7注意:PB7既作为输入,也作为输出,则不能直接在CubeMX里配置,需要自己写代码。原创 2023-03-18 01:16:37 · 214 阅读 · 0 评论 -
13.IIC
在c51里讲过啦,这里不多赘述iic介绍函数封装。原创 2023-03-18 01:14:11 · 33 阅读 · 0 评论 -
12.ADC
全称:Analog-to-Digital Converter,指模拟/数字转换器。原创 2023-03-18 01:13:53 · 104 阅读 · 0 评论 -
11.DMA
令人头秃的描述:DMA(Direct Memory Access,直接存储器访问) 提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于内存的工作来说就无法使用。简单描述:就是一个数据搬运工!!。原创 2023-03-18 01:15:32 · 128 阅读 · 0 评论 -
10.窗口看门狗 WWDG介绍,WWDG与IWDG异同点
窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测程序运行时间的场合。窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。原创 2023-03-18 01:13:01 · 166 阅读 · 0 评论 -
项目四:Wi-Fi插座_风扇_灯
通过ESP8266模块,实现手机控制wifi插座/风扇/灯。原创 2023-03-18 01:11:57 · 66 阅读 · 0 评论 -
8.串口相关
串口介绍串口发送数据,使用超时管理机制串口发送数据,使用超时管理机制串口中断模式发送串口中断模式接收作用:以阻塞的方式发送指定字节的数据形参 1 :UART_HandleTypeDef 结构体类型指针变量形参 2:指向要发送的数据地址形参 3:要发送的数据大小,以字节为单位形参 4:设置的超时时间,以ms单位作用:以中断的方式接收指定字节的数据形参 1 是 UART_HandleTypeDef 结构体类型指针变量形参 2 是指向接收数据缓冲区。原创 2023-03-18 01:13:38 · 297 阅读 · 0 评论 -
项目二:感应开关盖垃圾桶
sg90舵机介绍PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s,20ms左右。怎么让它发送波Trig ,给Trig端口至少10us的高电平( 根据我的实测,有的超声波模块要20us,甚至10ms)怎么知道它开始发了Echo信号,由低电平跳转到高电平,表示开始发送波怎么知道接收了返回波Echo,由高电平跳转回低电平,表示波回来了怎么算时间Echo引脚维持高电平的时间!波发出去的那一下,开始启动定时器波回来的拿一下,我们开始停止定时器,计算出中间经过多少时间。原创 2023-03-18 01:12:50 · 83 阅读 · 0 评论 -
7.PWM(stm32)
PWM模式1:在向上计数时,一旦 CNT < CCRx 时输出为有效电平,否则为无效电平;PWM模式2:在向上计数时,一旦 CNT < CCRx 时输出为无效电平,否则为有效电平;下计数时,一旦 CNT > CCRx 时输出为无效电平,否则为有效电平。下计数时,一旦 CNT > CCRx 时输出为有效电平,否则为无效电平。假如频率为 2kHz ,则:PSC=71,ARR=499。记得把极性设置为Low,因为LED灯是低电平才亮。通用定时器(TIM2~TIM4):各4路。高级定时器(TIM1):7路。原创 2023-03-17 11:09:26 · 48 阅读 · 0 评论 -
6.定时器Timer
软件定时缺点:不精确、占用CPU资源_nop_();i = 4;j = 129;k = 119;dodo1) 16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。2) 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535 之间的任意数值。3)4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:A.输入捕获B.输出比较C.PWM 生成(边缘或中间对齐模式)D.单脉冲模式输出。原创 2023-03-17 11:10:58 · 119 阅读 · 0 评论 -
项目一:电动车报警器(stm32)
单片机供电VCC GND接单片机产品不震动,输出高电平,模块上的DO口产品震动,输出低电平,绿色指示灯亮AO口不用单片机供电VCC GND接单片机,VCC需要接3.3V,5V不行!最大负载电路交流250V/10A,直流30V/10A引脚 IN 接收到低电平时,开关闭合。单片机供电VCC GND接单片机接收到信号,接收模块对应针脚输出高电平有D0 D1 D2 D3,对应遥控器的ABCD。原创 2023-03-17 11:08:39 · 114 阅读 · 0 评论 -
stm32共用外部中断线问题
配置外部中断的本质实质配置的是中断线,PA1、PB1、PC1等等同一pin口的配置只是选择了中断线信号的来源,你把PA1搭到EXTI_Line1上,那么PB1、PC1等等剩余的同一pin口就浮空了;(3)同一pin口共用一个中断线,但16个中断线却只共用7个中断服务函数:其中中断线EXTI_Line0-4独立拥有一个中断服务,中断线5-9共用一个中断服务函数,中断线10-15共用一个中断服务函数。4.外部中断的本质是某中断线得到信号触发,进入对应的中断服务函数的过程。2.不同pin口可以同时配置外部中断。转载 2023-03-17 11:07:58 · 1231 阅读 · 0 评论 -
4.复位和时钟控制(RCC)
1. 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)(见6.3.9节)中的。2. 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。三种不同的时钟源可被用来驱动系统时钟(SYSCLK)备份区域拥有两个专门的复位,它们只影响备份区域。1. 上电/掉电复位(POR/PDR复位)当以下事件中之一发生时,产生备份区域复位。1. NRST引脚上的低电平(外部复位)HSI振荡器时钟(高速内部时钟)HSE振荡器时钟(高速外部时钟)4. 软件复位(SW复位)原创 2023-03-17 11:05:25 · 71 阅读 · 0 评论 -
3.通用输入输出端口GPIO(点灯)
GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。简单来说我们可以控制GPIO引脚的电平变化,达到我们的各种目的。原创 2023-03-17 11:02:54 · 324 阅读 · 0 评论 -
2.初识STM32单片机
每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…将寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用。配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能;ST公司目前主力推的开发方式,新的芯片已经不再提供标准库。大大降低单片机开发难度,但是在不同芯片间不方便移植。了兼容所有芯片,导致代码量庞大,执行效率低下。深入理解单片机的运行原理,知其然更知其所以然。寄存器众多,需要经常翻阅芯片手册,费时费力;更大灵活性,可以随心所欲达到自己的目的;标准库与HAL库区别。原创 2023-03-17 11:04:09 · 52 阅读 · 0 评论 -
1.开发环境的安装
编程语言:C语言需要安装的软件有两个:Keil5 和 STM32CubeMXKeil5 的安装使用 Keil4 写 STM32 代码其实也是可以,但需要很复杂的配置,不建议新手操作。比较推荐 Keil5 编写 STM32 ,只需要一些简单的设置就可以上手,对新手友好。安装安装包(不需要太新,本课程以 MDK324 为例,最新的 MDK327 有问题)安装过程一路下一步即可(建议不要安装在 C 盘)安装路径一定不要有中文或空格!!(重要)原创 2023-03-17 11:01:16 · 68 阅读 · 0 评论