单片机
自然魂cym
Hello,World.
展开
-
使用单片机IO模拟串口发送
波形解析(9600波特率) 如下图所示,一个bit的时间间隔为104us,波特率 = 1秒/104us = 9615左右,与波特率9600接近,偏差是由于策略误差导致。 波形生成。 首先应该有一个定时器产生104us硬件定时中断,在中断中通过控制io口电平发送数据。 (1)配置定时器位104us。 (2)1byte波形生成。 (3)发送函数。 (4)用软件定时器10ms周期读取缓存到发送1byte的数据字节。 (5)硬件定时器...原创 2021-10-20 20:28:33 · 1025 阅读 · 0 评论 -
GD32F305关闭JTAG/SWD复用功能导致无法下载问题解决
最近由于芯片供应紧张,公司考虑将原来的STM32系列替换成国产的GD32单片机。两者虽然内核不同,但功能基本一致,包括寄存器也基本相同。 原来的stm32代码中,在上电时就关闭了JTAG/SWD复用功能,用做普通IO。但使用GD32F305时,发现关闭后,就再也通讯不上了。 查看手册,有如下说明: 从上图看出,MCU复位后,默认是启用SWJ功能的,而且下载时NRST脚有重新复位MCU,但为什么通讯不上?分析是因为 SWJ复用功能一上电...原创 2021-10-08 11:27:05 · 3175 阅读 · 3 评论 -
stm32启动文件向量表与烧录文件的对应关系
以stm32F411ce单片机为例说明。 1、打开启动文件startup_stm32f411ce.s,可以看到向量表信息,如下: 2、编译后,在map文件中搜索向量表中函数的地址。以向量表前3个为例子,在map文件中找到对应地址如下: 3、用JFlash打开编译后的hex文件,可看到最开始的内容为向量表中的内容一致,如图所示: ...原创 2021-09-13 15:57:51 · 327 阅读 · 0 评论 -
分支判断选择的另外一种方式(类似switch case和if elseif),使用正则表达式定义的宏函数
在使用stm32的头文件中看到的这种使用方式,贴出来看看。 #define GPIO_PORT(num) \ ((num == 0) ? GPIOA : \ (num == 1) ? GPIOB : \ (num == 2) ? GPIOC : \ (num == 3) ? GPIOD : \ (num == 4) ? GPIOE : \ (num == 5)转载 2015-05-09 16:16:25 · 834 阅读 · 0 评论 -
使用RTE_Driver做驱动
RTE(run-time environment)driver:运行时环境驱动。 (图1) MDK5.0开始,keil中出现了:在线安装和升级软件包(图1第三个按钮)、为目标选择软件包(图1第二个按钮)_、管理运行时环境(图1第三个按钮)三个按钮。使得keil更好用了,很多芯片开发包都可以在线下载升级,而不用再到官网下载开发包,当然还有挺多不可以在线升级下载的。最近在弄stm32f103r转载 2015-05-10 03:04:14 · 7247 阅读 · 0 评论