建站公司怎么备案,室内设计公司取名,网站建设现状 数据,开发区二手房单片机型号STM32F103R6:
最后实现的效果是#xff0c;开机后PC内要求输入1或0#xff0c;输入1则打开灯泡#xff0c;输入0则关闭灯泡#xff0c;输入其他内容则显示错误#xff0c;值得注意的是这个模拟的东西只能输入英文
之所以用2个LED灯是因为LED电阻粗略一算就是1… 单片机型号STM32F103R6:
最后实现的效果是开机后PC内要求输入1或0输入1则打开灯泡输入0则关闭灯泡输入其他内容则显示错误值得注意的是这个模拟的东西只能输入英文
之所以用2个LED灯是因为LED电阻粗略一算就是100欧姆所以懒得再去画其他的东西真是天助我也
时钟频率HSI 8MHZ; 之所以用8MHZ 这么慢的内部时钟是因为时钟太快了模拟速度其实也上不去proteus模拟一秒钟要花几十秒我还不如选个慢的反倒快了一点。真的是欲速则不达 选择PB1作为输出引脚具体设置看图片。选择了推挽输出初始化输出高电平接了上拉电阻。 这个是串口设置 值得一提的是好像proteus里面那个终端的波特率最高只能值5.7万那个样子
所以我把波特率设置为了56000.proteus里面的虚拟PC同样也要这样设置而且单片机频率最好也设置为8MHZ. //这个是main函数
int main(void)
{
// uint8_t txtbuff[]please input num1 or 2 \n\r 1 turn on the light\n\r 2 turn off the light;uint8_t txtbuff[]please input num 1 or 2\n\r;uint8_t txtbuff1[]1 turn on the light\n\r;uint8_t txtbuff2[]2 turn off the light\n\r;/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 */HAL_UART_Transmit(huart1,txtbuff,sizeof(txtbuff),1000); HAL_UART_Transmit(huart1,txtbuff1,sizeof(txtbuff1),1000);HAL_UART_Transmit(huart1,txtbuff2,sizeof(txtbuff2),1000);HAL_UART_Receive_IT(huart1,(uint8_t*)aRxBuffer,1);/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
//这个是修改后的函数 需要找到这个函数然后改成这个样子就可以了建议使用搜索整个project
void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 */uint8_t a[]light on\n\r;uint8_t b[]light off\n\r;uint8_t c[]error badness\n\r;extern uint8_t aRxBuffer;/* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(huart1);/* USER CODE BEGIN USART1_IRQn 1 */if(aRxBuffer0){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);HAL_UART_Transmit(huart1,b,sizeof(b),1000); }else if(aRxBuffer1){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);HAL_UART_Transmit(huart1,a,sizeof(a),1000); }else{HAL_UART_Transmit(huart1,c,sizeof(c),1000); }/* USER CODE END USART1_IRQn 1 */HAL_UART_Receive_IT(huart1,aRxBuffer,1);
}其他的地方都没有修改全都保持默认就可以了