
裸板 stm32
文章平均质量分 73
车子 chezi
乐于开源,善于分享。死磕自己,方便大家。广泛查阅,独立思考。持续琢磨,自成一家。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
换晶振导致stm32串口数据飞码的解决办法(补充)
今天(2014.4.21)把stm32f107的程序下载到stm32f103的板子上,发现串口收不到数据,突然想起晶振频率没有修改,#define HSE_VALUE ((uint32_t)13560000) /*!之后试验,发现有数据,但是乱码。百思不得其解,无意中发现,PC的波特率设置为9600,板子的波特率设置为19200就不会乱码。刚好是2倍的关系。顺藤摸瓜问度娘!一个帖子也是这原创 2014-04-22 09:28:11 · 1712 阅读 · 0 评论 -
stm32串口学习(一)
串口在工作中经常用到,今天我们从零开始学习stm32的串口编程(利用库函数)。先从最简单的情况开始,假设我们要实现的功能就是串口发送一个字节,不考虑接收,也不考虑中断。那么要解决两个问题:1 串口的初始化2 发送一个字节对于1,我们看看代码。//bound 表示波特率void uart_init(u32 bound){ GPIO_InitTypeD原创 2015-01-23 17:00:16 · 1902 阅读 · 0 评论 -
stm32中断优先级快速入门
STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。原创 2014-07-21 16:53:30 · 1159 阅读 · 0 评论 -
用双向链表实现一个栈
前面我们已经造好了一个轮子原创 2014-06-18 12:11:34 · 2068 阅读 · 1 评论 -
浅谈单片机中变量访问的互斥
本文以stm32为硬件平台,浅谈一下变量访问的互斥。假设是裸板,原创 2014-06-06 17:28:52 · 4019 阅读 · 0 评论 -
IAR6.1的工程迁移到IAR6.5不能用的解决方法
1.重命名过时的CMSIS头文件 “... \ CMSIS \ CM3 \ CoreSupport \ core_cm3.h“到”core_cm3.h.old原创 2014-05-06 11:55:33 · 1469 阅读 · 0 评论 -
stm32 独立看门狗学习
STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。我们的实验这样设计,主函数开始的时原创 2015-01-26 12:43:35 · 1279 阅读 · 0 评论 -
stm32 外部中断学习
今天我们看看STM32的外部中断实验。STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一一对应起来的呢?STM32 这样设计,GPIO 的管脚 GPIOx.0 ~ GPIOx.15 (x=A,B,C,D,E,F,G)分别对应中断线 0~15.这样每个中断线对应了 7 个 IO原创 2015-01-25 13:14:13 · 2564 阅读 · 1 评论 -
stm32 输入捕获学习(一)
输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。STM32 的输入捕获,简单地说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)中。1. 相关寄存器介绍1) 捕获/比较模式寄存原创 2015-02-03 21:41:38 · 24567 阅读 · 7 评论 -
stm32 输入捕获学习(二)
(本文参考STM32 开发指南 V1.3 —— ALIENTEK 战舰 STM32 开发板库函数教程 )1. 实验设计我们用 TIM5 的通道 1(PA0)来做输入捕获,捕获 PA0 上高电平的脉宽(用 WK_UP 按键输入高电平),通过串口打印高电平脉宽时间。2. 原理说明基本原理可以参考上一篇博文,在上个实验的基础上,我们稍作修改,就可以实现功能。1)增加原创 2015-02-04 19:23:42 · 5797 阅读 · 1 评论 -
stm32 PWM输出学习
STM32 的定时器除了 TIM6 和 7,其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。通用定时器也能同时产生多达 4路的 PWM 输出。今天的实验,我们仅利用 TIM3的 CH2 通道产生一路 PWM 输出。1.相关寄存器介绍1)捕获/比较模式寄存器 (TIMx_CCMR1/2) 捕获/比较模式寄存器原创 2015-01-31 12:40:34 · 4204 阅读 · 0 评论 -
stm32 定时器初步
今天学习STM32 的通用定时器:TIMx (TIM2、TIM3、TIM4 和 TIM5)。定时器比较复杂,功能繁多,这里我们就说最基本的计数功能。1.定时器的时钟从哪里来?定时器的时钟来源有 4 个: 1)内部时钟(CK_INT)2)外部时钟模式 1:外部输入脚(TIx) 3)外部时钟模式 2:外部触发输入(ETR) 4)内部触发输入(ITRx):使用 A 定时器作为原创 2015-01-29 17:21:41 · 1551 阅读 · 0 评论 -
stm32 窗口看门狗学习(一)
什么是窗口看门狗?1)独立看门狗 限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚。2)窗口看门狗 之所以称为窗口就是因为其喂狗时间是一个“窗口”,不能过早也不能过晚。STM32F10x 的窗口看门狗中有一个7位的递减计数器,出现下述2种情况之一时产生看门狗复位: 1)当计数器的数值从0x40减到0x3F原创 2015-01-27 17:56:35 · 2134 阅读 · 0 评论 -
stm32 窗口看门狗学习(二)
窗口看门狗有一个提前唤醒中断,如果开启这个中断,那么当计数器的值达到0x40的时候就会产生这个中断。上次的代码加一点就可以做这个实验了。void WWDG_Init(u8 tr,u8 wr,u32 fprer){ RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG时钟使能 WWDG_SetPrescal原创 2015-01-28 12:06:25 · 1221 阅读 · 0 评论 -
换晶振导致stm32串口数据飞码的解决办法
一般来说,stm32f107都是用标配的晶振,比如8MHz. 但是,如果用别的晶振,比如13.56M的晶振,那串口接收还正常吗?根据试验结果,很可能会飞码。比如说用串口助手发送的是0x35,但是在串口接收中断里面就会得到别的值,即上位机发送的数据和板子接收的数据不一致。通过查资料,解决办法如下:修改文件stm32f10x.h,把#define HSE_VALUE ((ui原创 2014-02-20 17:48:40 · 4361 阅读 · 1 评论 -
stm32串口学习(二)
今天继续学习stm32的串口编程(利用库函数)。上次我们说了串口的发送,这次我们说接收。接收可以用查询的方法,也可以用中断。显然,工程中多用中断的方式,那么就来看看中断接收。代码其实很简单,基本的配置不变,在上次的基础上加一点(优先级的配置和接收中断的使能)就可以了。 //Usart1 NVIC 配置 NVIC_InitTypeDef NVIC_InitStructur原创 2015-01-24 17:47:56 · 1145 阅读 · 0 评论