您现在的位置是:首页 >技术杂谈 >STM32G0x0系列 入门试验代码整理网站首页技术杂谈
STM32G0x0系列 入门试验代码整理
简介STM32G0x0系列 入门试验代码整理
试验目录
- 1.配置寄存器的方式点亮一盏灯
- 2.寄存器实现灯闪烁
- 3.HAL库实现跑马灯
- 4.按键控制LED灯
- 5.代码编写,通过寄存器发送字符
- 6.代码编写,通过寄存器发送字符串
- 7.代码编写,通过寄存器设置接收字符
- 8.代码编写,通过寄存器设置接收字符串(自己理解出现问题)
- 9.串口编写,通过HAL库进行字符串发送
- 10.重写printf
- 11.重写scanf
- 12.通过串口控制灯的亮灭
- 13.驱动LED屏
- 14.显示图片
- 15.显示中文字符
- 16.显示英文字符
- 17.按键中断试验
- 18.串口中断试验
- 19.显示器时钟试验
- 20.串口接收中断
- 21.利用Systick实现每隔一秒打印一次“hello world”
- 22.自己设计一款软件定时器(注意数据类型为uint32_t)
- 23.通过软件定时器设置灯闪烁1s
- 24.利用定时器实现1秒打印1个“HELLO WORLD”
- 26.调节灯的亮度
- 27.使用PWM方波调节占空比实现功能
- 28.通过调节PWM占空比实现呼吸灯效果
- 29.高低电平交替控制蜂鸣器
- 30.使用PWM信号控制
- 31.单通道单次转换:采集光照传感器的值
- 32.多通道单次转换(在ADC_Settings中开启扫描模式)
- 33.DMA_ADC单通道采集试验
- 34.DMA_ADC多通道采集试验
1.配置寄存器的方式点亮一盏灯
RCC->IOPENR |=1<<1; //开启GPIOB的时钟
GPIOB->MODER &=~(0x03<<4); //将MODER2置为00
GPIOB->MODER |=1<<4; //将MODER2置为01;开启输出模式
GPIOB->OTYPER &=~(1<<2); //推挽输出模式
GPIOB->ODR&=~(1<<2); //设置GPIOB2输出低电平
2.寄存器实现灯闪烁
void Delay(){//自定义函数计数
for(int i =0;i<50;i++){
for(int j=0;j<60000;j++){
}
}
}
void SetValue(){ //灭函数
GPIOB->ODR |=1<<2;
}
void ResetValue(){//亮函数
GPIOB->ODR &=~(1<<2);
}
//main函数
RCC->IOPENR |=1<<1; //开启GPIOB的时钟
GPIOB->MODER &=~(0x03<<4);//将MODER2置为00
GPIOB->MODER |=1<<4;//将MODER2置为01;开启输出模式
GPIOB->OTYPER &=~(1<<2);//推挽输出模式
GPIOB->ODR&=~(1<<2);//设置GPIOB2输出低电平
Delay();
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
SetValue();
Delay();
ResetValue();
Delay();
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
3.HAL库实现跑马灯
//1.将PB0和PB1和PB2配置为输出模式
//2.设置输出电平为高电平,让灯关闭
HAL_GPIO_WritePin(BLUE_GPIO_Port,BLUE_Pin,GPIO_PIN_RESET);//开启蓝灯
HAL_GPIO_WritePin(GREE_GPIO_Port,GREE_Pin,GPIO_PIN_SET);//关闭绿灯
HAL_GPIO_WritePin(YELLO_GPIO_Port,YELLO_Pin,GPIO_PIN_SET);//关闭黄灯
HAL_Delay(500);
HAL_GPIO_WritePin(BLUE_GPIO_Port,BLUE_Pin,GPIO_PIN_SET);//开启蓝灯
HAL_GPIO_WritePin(GREE_GPIO_Port,GREE_Pin,GPIO_PIN_RESET);//关闭绿灯
HAL_GPIO_WritePin(YELLO_GPIO_Port,YELLO_Pin,GPIO_PIN_SET);//关闭黄灯
HAL_Delay(500);
HAL_GPIO_WritePin(BLUE_GPIO_Port,BLUE_Pin,GPIO_PIN_SET);//开启蓝灯
HAL_GPIO_WritePin(GREE_GPIO_Port,GREE_Pin,GPIO_PIN_SET);//关闭绿灯
HAL_GPIO_WritePin(YELLO_GPIO_Port,YELLO_Pin,GPIO_PIN_RESET);//关闭黄灯
HAL_Delay(500);
4.按键控制LED灯
//1.配置PA8为输入状态
//2.将灯的引脚配置为高电平输出
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8))//读取管脚PA8的状态
{
HAL_Delay(100);//消抖
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8))
{
HAL_GPIO_TogglePin(BLUE_GPIO_Port,BLUE_Pin);//反转灯的状态
HAL_GPIO_TogglePin(YELLO_GPIO_Port,YELLO_Pin);//反转灯的状态
HAL_GPIO_TogglePin(GREE_GPIO_Port,GREE_Pin);//反转灯的状态
}
}
5.代码编写,通过寄存器发送字符
//1.开启USART1串口
//2.设置异步通信模式
//3.配置波特率,字长,校验位,停止位
void SendChar(uint8_t ch)
{
while(!(USART1->ISR&(1<<7)));//重点,0的时候不发,1的时候发送
USART1->TDR=ch;
}
while (1)
{
SendChar('A');//主函数调用
HAL_Delay(1000);
}
6.代码编写,通过寄存器发送字符串
//1.开启USART1串口
//2.设置异步通信模式
//3.配置波特率,字长,校验位,停止位
void SendString(uint8_t * buf)//定义指针类型
{
while(*buf)//这里
{
SendChar(*buf);
buf++;
}
SendChar('
');
}
7.代码编写,通过寄存器设置接收字符
//1.开启USART1串口
//2.设置异步通信模式
//3.配置波特率,字长,校验位,停止位
uint8_t RecvChar()
{
while(!(USART1->ISR&(1<<5)));//寄存器第5位
return USART1->RDR;//字符在前
}
while (1)
{
uint8_t ch=RecvChar();//接收字符
SendChar(ch);
}
8.代码编写,通过寄存器设置接收字符串(自己理解出现问题)
//1.开启USART1串口
//2.设置异步通信模式
//3.配置波特率,字长,校验位,停止位
uint8_t RecvChar()
{
while(!(USART1->ISR&(1<<5)));//寄存器第5位
return USART1->RDR;//字符在前
}
//字符串结束函数
void RecvString(uint8_t *buf)
{
uint8_t ch;
while(1)
{
ch=RecvChar();
if(ch == ' '|| ch =='
' )
{
*buf='