After graduating from high school in 1967, Cannon served in the Vietnam War as a Marine. Cannon was honorably discharged as a sergeant in 1970, after which he joined the River Rouge Police Department. In 1977, Cannon enlisted in the Michigan Army National Guard and joined the Kalkaska County Sheriff Department. Cannon served as sheriff of Kalkaska County from 1987–2004. From 2003-2004, Cannon served as the commander of the Joint Detention Operations GroupJoint Task Force Guantanamo. Roll Call reported that Cannon doesn't think his service at Guantanamo should be seen as unpatriotic, saying of it, "I've done that gladly. I've done that proudly. I would do it again." He was promoted to Brigadier General in 2004, assuming command of the 177th Military Police Brigade in Taylor, Michigan. He was promoted to Major General in 2006 as Commanding General of the 46th Military Police Command in Lansing, Michigan. Cannon served two deployments in Iraq during the Iraq War. His first deployment was 2008-2009 where he served as Deputy Commanding General responsible for developing Iraqi police forces. His second deployment to Iraq was 2010-2011 where he served as U.S. Forces-Iraq Provost Marshal General and Deputy Commanding General for Detention Operations. After his last deployment in Iraq, he returned to the Michigan Army National Guard and in February 2012 was placed in the Army Retired Reserves, effectively signaling his retirement from the military.
2014 congressional candidacy
In August 2013, Cannon announced that he would challenge Republican Congressman Dan Benishek in Michigan's 1st congressional district. Cannon ran unopposed in the Democratic primary on August 5, 2014. He was defeated by Benishek in the general election. Cannon was endorsed by the Sierra Club, and the League of Conservation Voters. Nancy Pelosi's campaign committee has donated to Cannon's campaign. In January 2014, Cannon was interviewed by a reporter from the Daily Mining Gazette. The day after the interview, the reporter called Cannon to ask follow-up questions. The person who answered the phone identified himself as Cannon, and went on to express his dislike of the Affordable Care Act. Cannon's campaign denied that he had made the anti-Affordable Care Act comments, and the newspaper later revealed that the reporter had dialed the wrong number and had spoken with a Cannon impersonator, and not Cannon himself. Cannon's campaign subsequently confirmed his support for the Affordable Care Act. Cannon has noted his belief that the "worst thing that could be done" to the Affordable Care Act is to "throw it all away."
Cannon came under public scrutiny in November 2018 after a widely shared online police body camera video depicted Cannon offering to "take responsibility" for Midland County Sheriff Scott Stephenson - after he had been found drunkenly slumped over in his car on the side of a Kalkaska County Road - in an apparent attempt to stop Stephenson from being arrested and jailed for drunk driving. The body camera footage depicts Stephenson begging the responding Midland officer and Cannon, the Garfield Township Police Chief who was off duty at the time, to not send him to jail. After Stephenson's pleas, Cannon can be seen stepping away from the scene to make a phone call, only to return and explain nothing could be done, saying: "I'm not the sheriff anymore...nd the old days and ways are gone."