[stm32] stm32f103c8t6 mini的blink程序

mac2024-01-28  35

一、主板的连接

1、TXD接口,接入A10

2、RXD接口,接入A9

其中A10,A9默认是通信位。

3、初始设置

BOOT0为1,BOOT1为0

二、软件设置

1、设置 DTR高电平、RTS高电平

2、端口号和波特率设置

三、程序代码

#include "stm32f10x.h" /******************************************************************************* * 函 数 名 : delay_us * 函数功能 : 延时函数,延时us * 输 入 : i * 输 出 : 无 注意:以上两函数中间的参数u32 i不能超过1800,举例,想定时一分钟,可以通过for循环让delay_ms(1000)走60次,而不能使用delay_ms(60000),不然程序就出错了。 https://www.cnblogs.com/jiwangbujiu/p/5463751.html *******************************************************************************/ void delay_us(u32 i) { u32 temp; SysTick->LOAD=9*i; //设置重装数值, 72MHZ时 SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源 SysTick->VAL=0; //清零计数器 do { temp=SysTick->CTRL; //读取当前倒计数值 } while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达 SysTick->CTRL=0; //关闭计数器 SysTick->VAL=0; //清空计数器 } /******************************************************************************* * 函 数 名 : delay_ms * 函数功能 : 延时函数,延时ms * 输 入 : i * 输 出 : 无 注意:以上两函数中间的参数u32 i不能超过1800,举例,想定时一分钟,可以通过for循环让delay_ms(1000)走60次,而不能使用delay_ms(60000),不然程序就出错了。 *******************************************************************************/ void delay_ms(u32 i) { u32 temp; SysTick->LOAD=9000*i; //设置重装数值, 72MHZ时 SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源 SysTick->VAL=0; //清零计数器 do { temp=SysTick->CTRL; //读取当前倒计数值 } while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达 SysTick->CTRL=0; //关闭计数器 SysTick->VAL=0; //清空计数器 } int main() { SystemInit(); //开启afio时钟 RCC->APB2ENR |= 0x00000001; //关闭JTAG //AFIO->MAPR = (0x00FFFFFF & AFIO->MAPR)|0x04000000; RCC->APB2ENR|=0X0000001c; //先使能外设IO PORTa,b,c时钟 GPIOB->CRH=0X33333333; //推挽输出 GPIOB->CRL=0X33333333; //推挽输出 GPIOC->CRH=0X33333333; //推挽输出 GPIOC->CRL=0X33333333; //推挽输出 GPIOA->CRH=0X33333333; //推挽输出 GPIOA->CRL=0X33333333; //推挽输出 while (1) { delay_ms(200); GPIOC->ODR=0; //全部输出0 delay_ms(200); GPIOC->ODR=0xffffffff; //全部输出1 } return 0; }

四、下载hex程序

编译后生成hex文件,如果没有hex文件,在工程设置里面,Create HEX File选中即可

五、效果

主板开始闪烁

六、调整程序

1、先修改程序闪烁时间

while (1) { delay_ms(1000); GPIOC->ODR=0; //全部输出0 delay_ms(1000); GPIOC->ODR=0xffffffff; //全部输出1 }

2、编译生成hex

3、复位

按一下复位键,主板停止闪烁,处于接收状态。重新下载hex文件,即可进行闪烁。

最新回复(0)