模版主函数重要代码

本文详细描述了嵌入式开发中如何使用串口进行数据传输,IIC总线控制EEPROM和4017芯片,以及利用定时器生成PWM信号和管理RTC时间。通过HAL库实现中断处理和硬件操作。
摘要由CSDN通过智能技术生成

一.串口

//*串口专用变量
uint16_t counter = 0;
uint8_t str[40];
uint32_t rx_buffer;

void Usart_Proc(void);

	//*串口接收中断打开
//	HAL_UART_Receive_IT(&huart1, (uint8_t *)(&rx_buffer), 4);

void Usart_Proc(void)
{
	if((uwTick -  uwTick_Usart_Set_Point)<1000)	return;//减速函数
	uwTick_Usart_Set_Point = uwTick;
	
//	sprintf(str, "%04d:Hello,world.\r\n", counter);
//	HAL_UART_Transmit(&huart1,(unsigned char *)str, strlen(str), 50);
	
//	if(++counter == 10000)
//		counter = 0;
}


//串口接收中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	counter++;
	sprintf(str, "%04d:Hello,world.\r\n", counter);
	HAL_UART_Transmit(&huart1,(unsigned char *)str, strlen(str), 50);	
	
	HAL_UART_Receive_IT(&huart1, (uint8_t *)(&rx_buffer), 4);

}

二.iic

//*EEPROM的相关变量
//uint8_t EEPROM_String_1[5] = {0x11,0x22,0x33,0x44,0x55};
//uint8_t EEPROM_String_2[5] = {0};

//*4017相关变量
//uint8_t RES_4017;

	/*外设使用基本配置*/	
	//*EEPROM测试
//	iic_24c02_write(EEPROM_String_1, 0, 5);
//	HAL_Delay(1);	
//	iic_24c02_read(EEPROM_String_2, 0, 5);	
//	
//  //*MCP4017测试
//	write_resistor(0x77);
//	RES_4017 = read_resistor();	

三.定时器

//*pwm相关变量
//uint16_t PWM_T_Count;
//uint16_t PWM_D_Count;
//float PWM_Duty;

//	BASIC_TIM6_Init();
//	PWM_INPUT_TIM2_Init();
//	SQU_OUTPUT_TIM15_Init();
//	PWM_OUTPUT_TIM3_Init();
	PWM_OUTPUT_TIM17_Init();
	__HAL_TIM_SET_AUTORELOAD(&htim17, 499);//PA7(黄色)的频率为2000hz

	//*打开基本定时器
	HAL_TIM_Base_Start_IT(&htim6);//每100ms触发一次中断
//		
//	//*输入捕获PWM启动
//	HAL_TIM_Base_Start(&htim2);  /* 启动定时器 */
//  HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);		  /* 启动定时器通道输入捕获并开启中断 */
//  HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);		
//		
//	//*输出方波PA2引脚	
//  HAL_TIM_OC_Start_IT(&htim15,TIM_CHANNEL_1);
//	
//	//*启动定时器3和定时器17通道输出
//  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);	//PA6
  HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);		//PA7

//基本定时器6更新回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM6)
  {
//		if(++counter == 10)
//		{
//			counter = 0;
//			sprintf(str, "Hello,world.\r\n");
//			HAL_UART_Transmit(&huart1,(unsigned char *)str, strlen(str), 50);	
//		}
	}
}


//输入捕获PWM中断回调
//void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
//{
//	  if(htim->Instance==TIM2)
//  {
//				if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
//			{
//				PWM_T_Count =  HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1)+1;
//				PWM_Duty = (float)PWM_D_Count/PWM_T_Count;
//			}
//				else if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
//			{
//				PWM_D_Count =  HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_2)+1;
//			}			
//	}	
//}

四.RTC

//*rtc相关变量
//RTC_TimeTypeDef H_M_S_Time;
//RTC_DateTypeDef Y_M_D_Date;

//	//*RTC内容显示
//	HAL_RTC_GetTime(&hrtc, &H_M_S_Time, RTC_FORMAT_BIN);//读取日期和时间必须同时使用
//	HAL_RTC_GetDate(&hrtc, &Y_M_D_Date, RTC_FORMAT_BIN);
//	sprintf((char *)Lcd_Disp_String, "Time:%02d-%02d-%02d",(unsigned int)H_M_S_Time.Hours,(unsigned int)H_M_S_Time.Minutes,(unsigned int)H_M_S_Time.Seconds);
//	LCD_DisplayStringLine(Line4, Lcd_Disp_String);		

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值