stm32

STM32 ~ CH340在STM32实现一键下载电路

僤鯓⒐⒋嵵緔 提交于 2020-01-25 16:25:12
在做基于STM32的多功能MP3播放器的课题时,在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计。 在画PCB初期原理图部分,对采用CH340G设计的一键下载电路不甚了解,于是花了一些时间来研究一下这个电路。 引用正点原子的一键下载电路: 我们通过RTS#和DTR#两个输出信号来控制STM32 IC的BOOT0和BOOT1两引脚来选择启动模式,如下表: 当烧写程序时,我们希望BOOT0=1,BOOT1=0。当烧写完成后我们希望 BOOT0=0,BOOT1=0(这个模式BOOT1可以是0可以是1,这里我们让BOOT1拉低,即整个过程BOOT1都为L接地,简化电路设计)。 这里我们只需考虑BOOT0的高低。 查看STM32的参考手册,如下图: 注意表6下方第一句话:“ 在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。 ” OK,综上所诉,我们可以得到: 1、系统上电,BOOT0需为L,进入模式一。上电复位后,在SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,进入主闪存存储器,执行我们烧写的代码。 2、当我们编译好程序,生成HEX文件。在烧写HEX文件时,BOOT0需为H,进入模式二。然后,系统必须复位一次(因为由1知道,系统上电后默认执行代码,即模式一),让系统重新锁存BOOT引脚。系统进入模式二,开始烧写HEX文件。 3

Setting dual bank mode on STM32f779ii

有些话、适合烂在心里 提交于 2020-01-25 08:05:27
问题 I'm trying to set dual bank mode for STM32F779II, but it doesn't set at all. So I tried in the main before doing anything the following code HAL_FLASH_Unlock(); HAL_FLASH_OB_Unlock(); FLASH->OPTCR |= FLASH_OPTCR_nDBANK_Msk; HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); And When I tried to check if the memory is in Single or Dual Mode: if((OBInit.USERConfig & OB_NDBANK_SINGLE_BANK) == OB_NDBANK_DUAL_BANK){ printf("Dual bank mode is set"); } but that statement is never set true. 回答1: The process is

RS485在STM32中的应用

孤街浪徒 提交于 2020-01-25 02:25:42
通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART基础上裁剪掉了同步通信功能,只有异步通信。 ①功能引脚 TX:发送数据输出引脚。 RX:接收数据输入引脚。 SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。 nRTS:请求以发送(Request To Send),n 表示低电平有效。如果使能 RTS 流控制,当USART 接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时,nRTS将被设置为高电平。该引脚只适用于硬件流控制。 nCTS:清除以发送(Clear To Send),n 表示低电平有效。如果使能 CTS 流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。 SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。 RS458是半双工通讯(2线制)

VGA pixel grouping on STM32

冷暖自知 提交于 2020-01-24 22:57:13
问题 I have some code that displays a single pixel on screen through VGA but am a bit stuck on how I could set multiple pixels on screen where I want them. I set up two Timers for Vertical Sync and Horizontal Sync then using the V-Sync interrupt, I set a flag to allow PA8 to toggle and output a pixel at the correct timing based on the SetCompare value I set on the timer's channel. The STM32f103c8 is also overclocked to 128MHz. Here's the code: #include "Arduino.h" //640x480 at 60Hz static volatile

stm32 USART rs485 rs232

心已入冬 提交于 2020-01-24 13:46:38
前题:   前段时间,在公司调试了一个项目,很简单,但对于初学的我来说,有点难。经过一周多两周的时间,刻骨铭心,深深的印入我的脑海,特此整理---那就是关于串口的那些事儿。串口那一堆的事儿,总是和rs485,usart,uart,rs232,rs422搞在一起,最后是你中有我,我中有你。如果说,会配置usart,但是不会配合rs485,在现实中基本会被笑话--而自己,就闹过这样的笑话,也被别人笑过。 一、rs485   rs485,维基百科又称呼它为EIA-485。数据在其上流动的能量来源于缆线两端的电压差,就像高处的水留向低处一般。最早是采用双线制,一收一发,半双工模式,并且在收发转换的时候需要控制方向进行设定,这等同于安保科的呼呼机:按下按钮--说话;松开按钮--接听。<ps:如果收发转换不进行方向设定,那么收发不能成功>   rs485规定:高电平一端为逻辑1,低电平一端是逻辑0;两端的电压差最小为0.2V以上时有效,if (差值 <= 12V || 差值 >= -7V) {接收端会认为是有效的}。   rs485没有定义数据协议,适用于广域网和一发多收的通信链路;点对点网络中,线型,总线型,不能是星型,环型网络;行大面积长距离传输(超过4000英尺,1200米);一般都需要配备2个终端电阻,保护信号的正确纯净。   另外,一般说rs485是半双工模式,但这不是绝对的--

NB与stm32通信

▼魔方 西西 提交于 2020-01-24 01:44:22
##用NB-IOT上的stm32单片机通过UART和USART串口与电脑通信 ###串口通信流程下收发数据流程: 中断触发—>进入中断服务函数—>根据中断服务函数中的状态(中断向量表)运行相对应的函数—>执行回调(callback)函数 [有关callback函数的定义请参见《windows环境下32位汇编》.作者罗云彬.第二章.windows环境下消息处理队列] ###函数解释: USART2_IRQ_HANDLER(void);//中断服务函数,主要工作是判断标志位,判断接收的数据是否是错误的,如果是错的就进入对应的回调函数,如果没错的话就进入static void UART_RxlSR_8BIT(UART_HandleTypeDef *huart2); static void UART_RxlSR_8BIT(UART_HandleTypeDef *huart2);//隶属于接收使能函数,这个函数就是在流程中提到的中断服务函数相对应的函数 HAL_UART_RECEIVE_IT(UART_HandleTypeDef *huart2,uint8_t *pData,uint16_t Size); /*接收使能函数,如果通信过程中收到数据想要保存,必须运行接收使能函数。我在调试过程中,因为没有加这个函数,所以一直收不到32发来的数据。 参数解释:*huart2指串口2的句柄。

STM32 internal clocks

孤者浪人 提交于 2020-01-23 05:41:05
问题 I am confused with the clock system on my STM32F7 device (Cortex-M7 microcontroller from STMicroelectronics). The reference manual does not clarify the differences between these clocks sufficiently: SYSCLK HCLK FCLK The reference manual reads in chapter << 5.2 Clocks >> "The RCC feeds the external clock of the Cortex System Timer (SysTick) with the AHB clock (HCLK) divided by 8." This statement contradicts the figure from CubeMX. Notice that in CubeMX I can choose myself the prescaler from

SIGTRAP despite no set breakpoints; hidden hardware breakpoint?

妖精的绣舞 提交于 2020-01-22 10:40:14
问题 I am debugging this piece of software for an STM32 embedded system. In one of the functions my programs keeps hitting some sort of breakpoint: SIGTRAP, Trace/breakpoint trap However, in GDB, when I do info breakpoints I get No breakpoints or watchpoints . The breakpoint actually corresponds to a breakpoint I had set quite some time ago, in another version of the executable. When I set that breakpoint, GDB told me automatically using a hardware breakpoint on read-only memory (or a similar

STM32位带操作

独自空忆成欢 提交于 2020-01-21 22:58:25
1. 位带操作是可以对寄存器内的一个位映射到位带别名区进行单独操作----寄存器正常是一次进行32位的操作 2. STM32是通过位带别名区实现位操作,即将寄存器中的一个位映射到另一个32位的地址上,操作这个地址就能操作寄存器的一个位 3. 外设位带区地址为: 0X40000000~0X40100000,位带别名区的地址为:0X42000000~0X43FFFFFF 4. SRAM位带区地址:0X2000 0000~X2010 0000,位带别名区地址:0X2200 0000~0X23FF FFFF 5. 寄存器的位对应位带别名区地址计算公式: ((addr & 0xF0000000)+0x02000000+((addr &0x00FFFFFF)<<5)+(n<<2)) addr是寄存器的地址,n是寄存器内对应的第几位 来源: CSDN 作者: q601785959 链接: https://blog.csdn.net/q601785959/article/details/104064257

搜索引擎常用site语法baidu/google

亡梦爱人 提交于 2020-01-21 15:57:13
背景 善于使用 Google 搜索的 site 语法可以快速在浩瀚无垠的网络大海中快速定位需要到的资源,提高自己工作学习的效率 ps:网上资料很多,博主也只是边学边记,有疑问,欢迎留言指正 语法实例 site :站点定位,指定特定域名下进行搜索 实例 : stm32开发板 site:taobao.com 在百度中搜索后仅会显示淘宝下的产品 注意 :site后面仅能带英文字符,不能带空格 intitle :标题定位,包含关键字的标题进行搜索 实例 : stm32开发板 intitle:视频 会搜索stm32中视频资源结果 filetype : 限定未见格式,只搜索某些特定类型的文件格式 实例 : stm32f103 filetype:pdf 会把stm32f103相关的pdf格式的资源搜索出来 来源: CSDN 作者: 玉怀一捧雪 链接: https://blog.csdn.net/libin55/article/details/104059107