收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2.将GPIO设置为输入模式并读取输入电平
(1) 在Pinout & Configuration配置中,左键单击要设置为输入模式的引脚,并选择GPIO_Input模式。
(2)在main.c函数中,可以通过HAL_GPIO_ReadPin()函数读取引脚的输入电平,假设设置的输入引脚为PA5。
则读取PA4的输入电平时,可以用以下代码:
HAL\_GPIO\_ReadPin(GPIOA, GPIO\_PIN\_5)
HAL_GPIO_ReadPin()函数的参数中,第一个参数GPIOA代表选择的引脚为PA引脚,第二个参数GPIO_PIN_5代表选择的引脚序号为5。
3.延时函数
延时函数常用于按键消抖,或用于LED灯闪烁,可以通过HAL_Delay()函数来实现延时,假设需要延时500ms,可以输入以下代码:
HAL\_Delay(500)
注意这里HAL_Delay()函数是以ms为单位。
4.PWM的产生
在Pinout & Configuration配置中,将要输出PWM波的引脚设置成TIMX_CHX模式,如这里我们设置PA8为输出PWM波的引脚:
从图中的TIM1_CH1中可以看出PA8对应的通道是TIMER1中的CHANNEL1,因此后续我们将对这一个通道进行配置。
选中Timers -> TIM1,将其中的Clock Souce改为Internal Clock,将Channel1改为PWM Generation CH1。
在Clock Configuration一栏中更改内部时钟源的频率,比如我们这里设置为8MHz。
在之前的Pinout & Configuration -> Timers -> TIM1一栏的Parameter Settings中更改PWM的参数。比如这里设置时钟周期为8MHz的128分频,计数模式为增计数,一个PWM周期为64300,上升沿占的周期为31250:
上述配置完成后,即可在main.c中写如下代码来产生PWM波:
HAL\_TIM\_PWM\_Start(&htim1, TIM\_CHANNEL\_1);
其中HAL_TIM_PWM_Start()函数用于启动PWM波的产生,第一个参数&htim1表示所用的时钟源为TIMER1,第二个参数TIM_CHANNEL_1表示用的通道是Channel1,这也正对应了我们选择的PA8引脚所对应的通道。
二、如何向板子下载程序
1.引脚配置
在Pinout & Configuration配置中,选中System Core -> SYS,在Debug一栏中选择Serial Wire。
2.下载选项设置
首先准备好J-LINK下载器。在STM32CubeIDE的工具栏中选择Debug下拉列表中的Debug Configurations…选项,将调试探头选择为J-LINK,接口类型选择SWD。
3.连接下载器
用杜邦线连接STM32和J-LINK,注意以下对应关系:
STM32F103C8T6 | J-LINK |
---|---|
3V3 | 3V3 |
G | GND |
SWDIO | SWDIO |
SWCLK | SWCLK |
连接好后用usb连接J-LINK和PC。
4.BOOT配置
在每个STM32的芯片上都有两个BOOT0和BOOT1两个管脚,这两个管脚的电平状态决定了芯片复位后从哪个区域开始执行程序,具体对应关系如下:
BOOT状态 | 工作模式 |
---|---|
BOOT0 = 0 BOOT1 = x | 从用户的闪存模式启动,正常工作模式 |
BOOT0 = 1 BOOT1 = 0 | 从系统存储器启动,厂家设置的工作模式 |
BOOT0 = 1 BOOT1 = 1 | 从内置SRAM启动,这种模式可用于调试 |
在首次用STM32下载自己的程序时,需要按照下述步骤配置BOOT:
- (1) 将BOOT0置1,BOOT1置0,按下RESET键。
- (2) BOOT0置0,BOOT1置0,下载程序。
之后下载程序就只需要执行步骤(2),不需要执行步骤(1)了。
5.开始下载
上述配置全部完成后,点击工具栏中的Debug按钮,即可开始下载程序。
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
et/topics/618679757)**
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!