
MCU
文章平均质量分 53
单片机相关
tangYi0_0
嵌入式软件开发工程师|物联网行业|合肥
展开
-
嵌入式系统中常见的存储器
嵌入式系统中常见的存储器原创 2024-10-12 17:03:17 · 322 阅读 · 0 评论 -
ARM架构与ARM内核
ARM的架构指的是ARM的指令集架构,ARM内核时其硬件实现。ARM公司既不生产芯片也不出售芯片,它只销售芯片设计的授权。原创 2024-08-24 17:28:52 · 1239 阅读 · 0 评论 -
MCU调试技巧-串口打印
MCU调试技巧-串口打印,软件仿真printf;串口重定向printf;ITM机制;Semihosting机制;SEGGER-RTT机制原创 2024-08-06 10:12:40 · 523 阅读 · 0 评论 -
RTT-邮箱
RTT-邮箱概念邮箱是特别的消息队列邮箱中每个邮件的长度固定,是4个字节如果是大的buff,直接发送地址接口创建静态邮箱rt_err_t rt_mb_init (rt_mailbox_t mb, const char *name, void *msgpool, rt_size_t size, rt_uint8_t flag)删除静态邮箱rt_err_t rt_mb_detach (rt_mailbox_t mb)创建动态邮箱rt_mailbox_t rt_mb_create (c原创 2021-07-27 21:52:01 · 1321 阅读 · 0 评论 -
RTT-信号量
RTT-信号量概念信号量就是一个标记位,释放信号量就是标记位加一,获取信号量后自动减一,减到0后不能再获取了。信号量(Semaphore)是一种实现线程间通信的机制,实现线程之间同步或临界资源的互斥访问,常用于协助一组相互竞争的线程来访问临界资源。在多线程系统中,各线程之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。接口创建静态信号量rt_err_t rt_sem_init (rt_sem_t sem, const char *name, rt_uint32_t v原创 2021-07-22 22:02:59 · 567 阅读 · 0 评论 -
RTT-互斥锁
RTT-互斥锁概念互斥锁可以将资源锁定,谁锁定谁开锁,锁定时其它线程无法再对该资源进行锁定。当资源锁定时,该线程优先级会被提升到所有线程中优先级最高的线程同等级,以防发生优先级翻转情形。当一个线程拿到互斥锁时,持有该互斥量的线程也能够再次获得这个锁而不被挂起,即递归访问。接口创建静态互斥锁rt_err_t rt_mutex_init (rt_mutex_t mutex, const char *name, rt_uint8_t flag)删除静态互斥锁rt_err_t rt_mutex原创 2021-07-27 21:49:38 · 972 阅读 · 0 评论 -
RTT-事件
RTT-事件概念事件和信号量类似,也是进程间的标志位这是一个32位的标志位,每个bit位都可以用作一个标志接口创建静态事件rt_err_t rt_event_init (rt_event_t event, const char *name, rt_uint8_t flag)删除静态事件rt_err_t rt_event_detach (rt_event_t event)创建动态事件rt_event_t rt_event_create (const char *name, rt_ui原创 2021-07-27 21:50:54 · 461 阅读 · 0 评论 -
RTT-消息队列
RTT-消息队列参考:《[野火®]《RT-Thread 内核实现与应用开发实战—基于STM32》概念消息队列就是一个线程给另一个线程发消息,收到消息就处理,没收到就挂起。用户还可以指定挂起的线程时间 timeout;当队列中有新消息时,挂起的读取线程被唤醒并处理新消息。当有多个消息发送到消息队列时,通常是将先进入消息队列的消息先传给线程,,即先进先出原则(FIFO)。同时 RT-Thread 中的消息队列支持优先级,也就是说在所有等待消息的线程中优先级最高的会先获得消息。内部的实现,是将消原创 2021-07-22 22:01:22 · 953 阅读 · 0 评论 -
RTT-软件定时器
RTT-软件定时器概念RTT的软件定时器是利用systick里的计数来实现的有两种方式,一种是创建一个线程然后在线程里调用回调函数,另一种是直接在systick的中断里调用回调函数有两种模式,一种是只使用一次,另一种是周期使用接口创建静态定时器void rt_timer_init (rt_timer_t timer, const char *name, void(*timeout)(void *parameter), void *parameter, rt_tick_t time, rt_u原创 2021-07-27 21:53:21 · 946 阅读 · 0 评论 -
RTT-移植Nano
RTT-移植Nano一、准备工作STM32F103模板工程RTT-nano源码 https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/an0038-nano-introduction二、增减文件rt-thread\bsp里只保留board.c和rtconfig.hrt-thread\libcpu里只保留cortex-m3在MDK的工程文件路径里加入:rt-thread\bsprt-th原创 2021-07-29 22:54:26 · 672 阅读 · 0 评论 -
RTT-线程管理
RTT-线程管理官方API文档:https://www.rt-thread.org/document/api/group___thread.html概念线程是竞争系统资源的最小运行单元。每个线程在自己的环境中运行。在任何时刻,只有一个线程得到运行,RT-Thread 调度器决定运行哪个线程。调度器会不断启动、停止每一个线程,宏观看上去所有的线程都在同时在执行。作为线程,不需要对调度器的活动有所了解,在线程切入切出时保存上下文环境(寄存器值、堆栈内容)是调度器主要的职责。为了实现这点,每个 RT-原创 2021-07-21 22:43:27 · 578 阅读 · 1 评论 -
MCU-串口通信协议
串口通信协议介绍原创 2020-10-26 09:32:47 · 1629 阅读 · 0 评论 -
树莓派Pico入手
树莓派Pico入手指南原创 2022-07-29 21:01:47 · 916 阅读 · 1 评论 -
IIC协议理解
IIC通信协议原创 2022-07-25 14:36:31 · 571 阅读 · 0 评论 -
EC200U open方案环境搭建
EC200U open方案环境搭建1. 资源平台:UIS8910DM 500MHz Cortex A5频段:LTE Cat 1 上行最大5M,下行最大10MLTE-FDD: B1/B3/B5/B8LTE-TDD: B34/B38/B39/B40/B41GSM: 900/1800 MHz存储:RAM:1.7MROM:1M外设:UART X2SPI X1I2C X2ADC X3GPIO X29USB2.0 X1SDIO X2SD2.0 X1支持蓝牙支持GNSS原创 2021-09-13 17:19:13 · 3722 阅读 · 0 评论 -
MCU-串口发送实现
MCU-串口发送实现例程仓库:https://gitee.com/ll0_0ll/MCU-UART1.串口发送寄存器为空中断+RingBuff初始化一段内存空间作循环队列发送数据时,先将数据放到循环队列中,然后开启发送寄存器为空中断(USART_IT_TXE)在中断中,判断队列中是否有数据,有数据就发送,没有数据就关闭中断void uart1_send_bytes(unsigned char *data, unsigned int len){ ringbuf_write(&a原创 2021-08-02 16:37:45 · 621 阅读 · 0 评论 -
MCU-串口接收实现
MCU-串口接收实现例程仓库:https://gitee.com/ll0_0ll/MCU-UART1.串口接收中断+空闲中断空闲中断是接受数据后出现一个字节的高电平(空闲)状态,就会触发空闲中断。接收中断是接收一个字节后就会触发。串口开启接收中断和空闲中断(RXNE+IDLE)在接收中断中将数据放入接收buff在空闲中断中发出信号,通知上层应用数据帧接收完毕void USART1_IRQHandler(void){ u8 tmp; if (USART_GetIT原创 2021-08-02 16:36:02 · 972 阅读 · 0 评论 -
STM32F103-硬件接口
STM32F103 硬件接口????????UARTTXRXUSART1PA9PA10USART2PA2PA3USART3PB10PB11UART4PC10PC11UART5PC12PD2????????SPINSSSCLKMISOMOSISPI1PA4PA5PA6PA7SPI2PB12PB13PB14PB15SPI3PA15PB3PB4PB5???????原创 2021-04-01 23:26:58 · 1056 阅读 · 0 评论 -
Nuvoton M031-时钟树
时钟源内部高速振荡器HIRC内部低速振荡器LIRC外部高速晶振HXT外部低速晶振锁相环PLL系统时钟48MHz的芯片SYSTICK时钟源有六个:HXT:12MHzLXT:32.768KHzHXT/2:24MHzHCLK/2:25MHzHIRC/2:24MHzCPUCLK:48MHzHCLK48MHz的芯片SYSTICK时钟源有四个:HXT:12MHzLXT:32.768KHzLIRC:38.400KHzHIRC:48MHzPCLK0PCLK0的时钟源为H原创 2021-03-16 18:10:23 · 771 阅读 · 0 评论 -
DEBUG-在存在中断的情况下SPI写数据失败
情境单片机裸机程序,开了一个外部中断用来脉冲计数,需要每5s将计数值写入SPI Flash保存。这里的SPI读写是硬件实现的。发现在脉冲计数过程中写入SPI失败。在写的时候关闭总中断可以写入成功,但是这时脉冲计数就会不准确。分析如果是软件SPI,时序是软件控制的时序,会存在被打断的风险,导致写入失败。而硬件SPI,基本随便使用,随便被打断。因为用户写入的bit之间是不会被打断的,只是不同字节(半字或者字)之间的数据有被打断的问题,这个完全不用担心。因为外接的设备,基本不限制各个字节什么时候发过来。那原创 2021-02-25 18:34:51 · 2046 阅读 · 0 评论 -
STM32F103-定时器
STM32F103系列的单片机一共有11个定时器,其中:1个系统嘀嗒定时器2个看门狗定时器2个基本定时器(TIM6和TIM7)4个通用定时器(TIM2~TIM5)2个高级定时器(TIM1和TIM8)基本定时器只具有16位计数器功能,并且只能向上计数。通用定时器计数器输入捕获输出比较生成pwm计数器的三种计数模式向上计数模式:从0开始,计到arr预设值,产生溢出事件,返回重新计时向下计数模式:从arr预设值开始,计到0,产生溢出事件,返回重新计时中央对齐模式:从0开始原创 2021-02-22 21:30:12 · 1182 阅读 · 0 评论 -
STM32-GPIO八种输入输出模式
GPIO八种输入输出模式参考: https://blog.youkuaiyun.com/baidu_37366055/article/details/80060962https://www.cnblogs.com/lweleven/p/mcuioout.html输入模式输入浮空 GPIO_Mode_IN_FLOATING输入上拉 GPIO_Mode_IPU输入下拉 GPIO_Mode_IPD模拟输入 GPIO_Mode_AIN输出模式推挽输出 GPIO_Mode_Out_PP开漏输出 GPIO原创 2020-10-23 16:19:45 · 1077 阅读 · 0 评论 -
STM32F103-时钟树
STM32F1 时钟树参考:《【野火®】零死角玩转STM32—F103指南者》时钟源HSI:高速内部时钟,RC振荡器,频率为8MHzHSE:高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHzLSI:低速内部时钟,RC振荡器,频率为40kHzLSE:低速外部时钟,接频率为32.768kHz的石英晶体LSI可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。LSE也可用来通过程序选择驱动RTC。内部即指芯片原创 2020-10-19 21:18:14 · 1502 阅读 · 0 评论 -
STM32-命名规则
原创 2020-07-20 22:06:10 · 210 阅读 · 0 评论 -
MSP430G2553-时钟系统配置
在MSP430单片机中,一个时钟周期= MCLK晶振的倒数。如果MCLK是8MHz,则一个时钟周期为1/8us。一个机器周期=一个时钟周期,即430每个动作都能完成一个基本操作。一个指令周期= 1~6个机器周期,具体根据具体指令而定。另外,指令长度只是一个存储单位,与时间没有必然的关系。MSP430G2553单片机的时钟模块主要包括:三个时钟:辅助时钟ACLK、主时钟MCLK、...原创 2018-05-08 22:34:14 · 7868 阅读 · 0 评论 -
MSP430G2553-引脚简单使用
1.选择引脚功能 -- PxSEL,PxSEL2PxSEL2 PxSEL 管脚功能0 0 用作IO口0 1 用作第一功能引脚1 0 保留,参考具体型号的手册1 1 用作第二功能引脚设置...原创 2018-04-24 22:38:22 · 6360 阅读 · 1 评论 -
STM32-学习入门
软件环境MDK-ARM:http://www.myir-tech.com/download.aspJlink驱动:<>串口助手:<>CH340驱动:<>一些资料正点原子库函数开发指南STM32F10x固件库用户手册STM32F10x技术参考手册<>学习网站1.开源电子网: http://www.openedv.com/...原创 2020-04-18 12:24:25 · 384 阅读 · 0 评论 -
机智云GoKit3点灯教程(基于正点原子的代码风格)
首先的首先,吐槽一波机智云的教程。官方的教程总是让下它那个微信宠物屋的代码,一步看结果。拜托!就不能来个一步一步地教程吗!还有那个宠物屋的代码看得很头痛啊。总而言之,官方的教程给我的感觉就是很凌乱。按习惯,拿到板子先点个灯,下面就来一步一步实现点灯功能。一、给WIFI模块下固件1.如果是官方买的或送的WIFI模块一般里面都下好了固件。但是有时候可能不是最新的,需要重新下一遍。步骤按...原创 2019-01-10 18:36:29 · 1127 阅读 · 0 评论 -
自制Jlink_OB(STM32c8t6)
话不多说,先上图。实物图:原理图·:下载连接图:说明:这里采用SWD下载方式,可以用的JLink连接需要下载固件的JLink,这里焊上排针不好看就直接用杜邦线斜着插,稍微上点力就能有效连接了。SWDIO-------------------------SWDIOSWCLK------------------------SWCLKGND---...原创 2019-01-12 21:57:35 · 11274 阅读 · 7 评论 -
STM32-keil5仿真调试
借着备考蓝桥杯,整理一下32的调试技巧。1.在魔术棒里找到Debug栏,选择软件仿真(注意右下角Parameder)2.进入调试界面3.点击进入示波器,点击setup设置(点击右上角新建,输入例如PORTA.6,再选择Display Type为Bit,颜色随便选)...原创 2019-03-04 20:18:05 · 11790 阅读 · 0 评论 -
STM32-输出比较
这个输出比较模式理解起来还是有点打脑壳的,但理解了也挺简单的。对输出比较的理解分成两部分来解释:一、原理二、在STM32上实现: 1)硬件上的配置 2)中断服务程序的编写实现一、原理 示意图就像上面画的,一开始我设置输出高电平,设置ARR为最大oxff。第一次时设置CCR为50000,当到了50000我进入中断使状态翻转...原创 2019-04-19 01:38:38 · 13112 阅读 · 10 评论 -
STM32位带操作总结---2018/4/20
寒假做东西时,发现了这个骚操作,现在整理的时候发现有点忘了,故写下此总结备着。主要讲两个问题:1.什么是位带操作2.怎么操作1.1 在51单片机中,假如P1.1口有一个LED灯,那么对led的操作就是P1.1=0或P1.1=1。而stm32是做不到这样的,它是用两个函数来置位的:void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);v...原创 2018-04-20 22:35:58 · 966 阅读 · 0 评论