主要使用的是103和407系列的32
不知不觉转眼大二也过了一半了,总是想说要开始学32,学32,却一直没有正真的系统的去开始学32。到了寒假,有了许多可以自己调配的时间, 学了一个多礼拜,大致学到了定时器,输出pwm左右,也实战了一下。之前没学32之前一直以为用32做东西不算什么本事,以为只是调用调用库,哪有51更加底层,更加清楚。学了之后才发现,果断被打脸了。51虽说经典,但是32确实强大。 用32写程序不只是调用库那么简单,要了解32各个函数成员的意义,每个模式的作用........(当然也可以直接copy例程的一个一个的代码块,可以不理解直接用函数接口,但是不建议这样,因为这样永远不能直接做东西) 。
其实之所以难上手是因为32内部的中断,定时器,寄存器相较于51多了太多太多,所以为了管理这些东西,会有很多的接口, 很多的定义,很多的设置和模式需要自己去判断...... 想想第一次用j-link烧程序的时候都是历经挫折
本菜鸟接下来来说一下点亮led和流水灯的一些关键点:1. 32不同于51端口不需要进行任何配置就可以用,32因为功能较51强大很多正是体现在这些东西,32初始化需要调用xxx_gpio.h里
的GPIO_InitTypeDef,这是一个结构体,内部的成员有如图:
可以看到里面3个成员,如果是stm32f407的,这里面的 GPIO_Mode还要细分成几个模式
2.GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct),初始化函数,把配置好的端口通过这个函数送入里面初始化,IO口就初始化好了
一言不合上代码:
#include "stm32f10x.h"
#define digitalHi(p,i) {p->BSRR=i;} //设置为高电平
#define digitalLo(p,i) {p->BRR=i;} //输出低电平
#define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态
void LED_GPIO_Config()
{
/*定义一个GPIO_InitTypeDef类型的结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/*开启GPIOB和GPIOF的外设时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/*选择要控制的GPIOB引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
/*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*设置引脚速率为50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*调用库函数,初始化GPIOA1*/
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*选择要控制的GPIOB引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
/*调用库函数,初始化GPIOA2*/
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*选择要控制的GPIOB引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
/*调用库函数,初始化GPIOA3*/
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*关闭3个led*/
GPIO_SetBits(GPIOA, GPIO_Pin_1);
GPIO_SetBits(GPIOA, GPIO_Pin_2);
GPIO_SetBits(GPIOA, GPIO_Pin_3);
}
void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
int main(void)
{
LED_GPIO_Config();
while(1)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_1);
Delay(0x0FFFFF);
GPIO_SetBits(GPIOA, GPIO_Pin_1);
GPIO_ResetBits(GPIOA, GPIO_Pin_2);
Delay(0x0FFFFF);
GPIO_SetBits(GPIOA, GPIO_Pin_2);
GPIO_ResetBits(GPIOA, GPIO_Pin_3);
Delay(0x0FFFFF);
GPIO_SetBits(GPIOA, GPIO_Pin_3);
}
}
上一篇:STM32 GPIO模式总结
下一篇:STM32 定时器输出PWM的模式
推荐阅读最新更新时间:2024-03-16 16:23
设计资源 培训 开发板 精华推荐
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 千丘智能侍淳博:用数字疗法,点亮“孤独症”儿童的光
- 数药智能冯尚:ADHD数字疗法正为儿童“多动症”提供更有效便捷服务
- Vicor高性能电源模块助力低空航空电子设备和 EVTOL的发展