- 博客(313)
- 资源 (3)
- 收藏
- 关注
原创 STM32第三十二课(Freertos, HAL, Cubemx, Ethernet, LWIP)
通过在cubemx中配置ethernet和lwip,可以方便的使用网络功能。首先是要配置ethernet。
2022-01-25 16:59:41
5412
1
原创 STM32第三十一课(IAP,bootloader,USART,CubeMX)
官方参考例程AN4657。https://www.st.com/en/embedded-software/x-cube-iap-usart.html
2022-01-05 13:23:55
2033
原创 STM32第三十课(IAP,bootloader)
应用中产品装配完成后,下载口不便引出的情况下,或者是某些设备需要具有远程更新程序情况下,使用串口IAP的方式将会更加便捷。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。[ bootmode1:bootmode0 ]1)00或者10:即bootmode为0时,始终从Main Flash启动。是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。起始地址0x80000000。2)01:即bootmode0为
2022-01-05 09:54:22
5522
原创 STM32第二十九课(Freertos, HAL, cubemx,CMSIS)
来看看CMSIS_V1对Freertos的API的封装。typedef QueueHandle_t osMessageQId;typedef struct QueueDefinition * QueueHandle_t;typedef struct QueueDefinition xQUEUE;typedef xQUEUE Queue_t;所以,在CMSIS下,osMessageQId,是一个指针,是一个Queue的句柄。...
2021-12-30 14:29:53
1521
原创 STM32第二十八课(Freertos, HAL,cubemx,task notification)
task notification是更高级的IPC。可以替代sem,queue, event group等。TN是一种更高效率的IPC方式。每个task都有一个task notification vector,TNV。32bits。+++++++++++++++++++++++++++++++++++++++++++使用TNV模拟二值信号量。void DataProcess_task(void *pvParameters){ u8 len=0; u8 CommandValue=COMMAN
2021-12-26 18:33:38
655
原创 STM32第二十七课(Freertos, HAL,cubemx,eventgroup)
eventgroup是一种更高级的IPC。每个EG,具有24个bit,也就是说,具有24个标志flag。用户任务可以通过调用API,可以针对每个标志,打标或者清标。这种方式,是最接近于前后台架构下的使用方式。+++++++++++++++++++++++++++++++++常用的API有,xEventGroupSetBits----对一个EG,打标。xEventGroupClearBits----对一个EG,清标。xEventGroupGetBits----获取一个EG的当前值。如果用户只关
2021-12-26 18:12:20
626
原创 STM32第二十五课(Freertos, HAL, cubemx, IPC)
在前后台架构中,我们使用了全局变量,作为前台ISR和后台main之间的共享数据。freertos中,可以使用更复杂的data share,那就是list。对于一个需要数据看板和数据处理的应用场景,多任务之间,可以通过共享list,实现数据处理。freertos提供了list相关的增删改查的API。最常见的,就是data board类的应用。多个任务,均可以在数据报表中增删改查,完成各个任务自己的业务。++++++++++++++++++++++++++++++++++++list,是最基础的共
2021-12-26 14:29:28
1467
原创 STM32第二十四课(Freertos ,HAL ,cubemx, Tasksuspend)
osDelay方式,将任务挂起,是基于time base的,当时间到了之后,任务会取消挂起,但是,有些情况下,并不知道何时需要将任务挂起,又何时再将任务恢复,这时候,就需要使用事件挂起方式,当事件到来时,将任务挂起,当另外的事件到来时,再将任务恢复。所有有两种场景,一种是ISR内挂起任务,一种是任务内挂起任务。tasksuspend和taskresume是成对使用。suspend的任务,只能由resume函数解放。如果是在ISR中使用,那么需要调用fromisr版本的API。++++++++++
2021-12-26 13:31:30
491
原创 STM32第二十三课(Freertos, HAL ,Cubemx)
勾选cmsis v1,++++++++++++++++++++++++++++++++++++++config param:++++++++++++++++++++++++++++++++++++include param++++++++++++++++++++++++++++++++++advance setting+++++++++++++++++++++++++++++++++++task and queue+++++++++++++++++++++++++++++++++++ti
2021-12-25 15:58:10
934
原创 STM32第二十一课(USB SLAVE, HAL)
STM32F407 的 USB OTG FS 是一款双角色设备 (DRD) 控制器,同时支持从机功能和主机功能,完全符合 USB 2.0 规范的 On-The-Go 补充标准。此外,该控制器也可配置为“仅主机”模式或“仅从机” 模式,完全符合 USB 2.0 规范。从机模式下则仅支持全速(FS, 12 Mb/s)收发器。ST 提供了我们一个完整的 USB OTG 驱动库(包括主机和设备),通过这个库,我们可以很方便的实现我们所要的功能,对于USB OTG FS功能模块, STM32F4通过AHB
2021-12-24 12:00:55
3326
原创 STM32第二十课(I2S,HAL)
WAV 即 WAVE 文件, 标准格式化的 WAV 文件和 CD 格式一样,也是 44.1K 的取样频率, 16 位量化数字,因此在声音文件质量和 CD 相差无几!WAV 一般采用线性 PCM(脉冲编码调制)编码, WAV 是由若干个 Chunk 组成的。RIFF WAVE Chunk、Format Chunk、 Fact Chunk(可选)和 Data Chunk。 每个 Chunk 由块标识符、数据大小和数据三部分组成,块标识符由 4 个 ASCII 码构成,数据大小则标出紧跟其后的数据的长度(单
2021-12-22 10:12:54
6455
原创 STM32第十九课(SDIO,FATFS,HAL)
STM32F4 的 SDIO 控制器包含 2 个部分: SDIO 适配器模块和 APB2 总线接口,复位后默认情况下 SDIO_D0 用于数据传输。初始化后主机可以改变数据总线的宽度SDIO_D0、 SDIO_D[3:0]或 SDIO_D[7:0]可以用于数据传输。MMC 版本 V3.31 和之前版本的协议只支持 1 位数据线,所以只能用 SDIO_D0(为了通用性考虑,在程序里面我们只要检测到是 MMC 卡就设置为 1 位总线数据)如果一个 SD 或 SD I/O 卡接到了总线上,可以通过主机配置
2021-12-21 12:59:11
2678
原创 STM32第十八课(FSMC,SRAM,HAL)
XM8A51216 的 A[0:18]并不是按顺序连接 STM32F4 的 FMSC_A[0:18],不过这并不影响我们正常使用外部 SRAM,因为地址具有唯一性。这样设计的好处,就是可以方便我们的 PCB 布线。使用 FSMC 的 BANK1 的sector3 来控制 XM8A51216,因为 XM8A51216 的读写时间基本一致,所以,我们设置读写相同的时序来访问 FSMC。++++++++++++++++++++++++++++++++++++++使能 FSMC 时钟,并配置 FSMC 相
2021-12-21 10:44:33
1920
原创 STM32第十七课(SPI,HAL)
STM32F4 的 SPI 功能很强大, SPI 时钟最高可以到 37.5Mhz,支持 DMA,可以配置为 SPI协议或者 I2S 协议(支持全双工 I2S)。我们使用 STM32F4 的 SPI1 的主模式,++++++++++++++++++++++++++++++SPI相关的库函数和定义分布在文件 stm32f4xx_spi.c 以及头文件 stm32f4xx_spi.h 中。配置相关引脚的复用功能,使能 SPI1 时钟。我们要用 SPI1,第一步就要使能 SPI1 的时钟, SPI1 的
2021-12-20 19:48:59
3627
原创 STM32第十六课(DMA,HAL)
有 2 个 DMA 控制器(DMA1 和 DMA2), 共 16 个数据流(每个控制器 8 个), 每一个 DMA 控制器都用于管理一个或多个外设的存储器访问请求。每个 DMA 控制器有 8 个数据流,每个数据流有多达 8 个请求5 个事件标志(DMA 半传输、 DMA 传输完成、 DMA 传输错误、 DMA FIFO 错误、直接模式错误),进行逻辑或运算,从而产生每个数据流的单个中断请求仅 DMA2 控制器支持存储器到存储器的传输, DMA1 不支持。DMA_SxCR 控制数据流到底使用哪一个通道
2021-12-20 16:29:12
3931
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人